いくつかの例をダウンロードするJSファイルを達成するために、ネイティブ

コンテンツソース:

https://www.cnblogs.com/ajaxkong/p/11686041.html

1:通常、H5のダウンロードプロパティを使用してタグのダウンロードの仕方によって、

次のようにコード例は以下のとおりです。

シーン:現代のブラウザのために適しているのは、urlは一般的にGETリクエストで使用されるダウンロードアドレスではなく、ファイルストリームであり、

コードをコピー
DOWNLOAD機能1(downUrlファイル名){ 
 2のdocument.createElementせ=( ""); //ラベルを作成
 {3 IF(の'ダウンロード')。
 4 a.download =ファイル名; //ダウンロード・ファイルを設定しますファイル名
 5}。
 6(document.body ||はdocument.firstChild).appendChild();。
 。7 a.href = downUrl、バックグラウンドのダウンロードアドレスの//戻りdownUrl 
 。8 a.target = '_parent'; 
 9 a.click (); //クリックイベントを設定する
10 a.remove(); //ラベルを削除
。11} 
12は、
13 DOWNLOAD(URL、 'test.xlxs')であるURL //をダウンロード
コードをコピー

 

ファイルストリームの背景には、その後、賛成のBlobオブジェクトファイルストリームでそれをパッケージ化した場合、一般的にPOSTリクエストで使用されます

次のようにコード例は以下のとおりです。

コードをコピー
ダウンロード機能1(コンテンツファイル名){ 
 2のdocument.createElementせ=( "")、//ラベル作成
 3ブロブ=新たなBLOB([コンテンツ ]); // オブジェクトパッケージBLOBファイルストリームと
 4 
 5 IF。 (の'ダウンロード'){ 
 6 a.download =ファイル名; //ダウンロードファイル名を設定
 7} 
 8(document.body ||はdocument.firstChild).appendChild();。
 。9 a.href = window.URL .createObjectUrl(ブロブ)のリターンの背景;; //コンテンツファイルを流れる
10 a.clickを(); //設定クリックイベント
11 a.remove(); //ラベル削除
12} 
13 DOWNLOADを(「私はファイル午前私は、ストリームファイルストリーム「」test.txtの「)しています
コードをコピー

POSTリクエスト場合、FileReaderのオブジェクトと、axiosの手段によって実現することができます。

コードをコピー
1 axios.post(downloadUrl、this.searchParams、{ 
 2 responseType: 'ブロブ' 
 3})。次に、(RES => { 
 4 CONSTブロブ= res.data 
 5 CONSTリーダ=新規FileReader()
 6 reader.readAsDataURL(BLOB)
 7 reader.onload =(E)=> { 
 8 CONST A =のdocument.createElement( '')
 9 a.download = '表格名称.xlsx` 
10 a.href = e.target.result 
11 document.body.appendChild ()
12 a.click()
13 document.body.removeChild()
14} 
15})。キャッチ(ERR => { 
16にconsole.log(err.message)
17})
コードをコピー

2:Base64の実装ファイルのダウンロードでは

非テキストファイルの場合、だけでなく、画像をダウンロードとして、JSのダウンロードを利用することができ、フロントエンドは、直接base64で、ダウンロードに変換することができます

バーコードは、直接インスタンス上で、すべてを理解することができるはず、私は、言うことはありません。

以下からのコードZhangxin徐ダウンロードについてボーエン、あなたは直接見ることができます

コードをコピー
機能ダウンロード1(domImg、ファイル名){ 
 2 //ダウンロードに隠されたリンクを作成する
 3 LET eleLink =のdocument.createElement( 'A');。
 。4 eleLink.download =ファイル名; 
 5 eleLink.style.display = 'なし'; 
 6 // BASE64画像転送アドレス
 7キャンバスLET =のdocument.createElement( 'キャンバス');。
 。8 canvas.getContext LETコンテキスト=( '2D'); 
 9せ幅= domImg.naturalWidth; 
10 = domImg.naturalHeight LETの高さ、
11コンテキスト.drawImage(domImg、0、0); 
12 //もしPNG画像、canvas.toDataURL( '画像/ PNG')
13 eleLink.href = canvas.toDataURL( '画像/ JPEG'); 
14 //トリガ・クリック
document.body.appendChild 15(eleLink); 
16 eleLink.click()
。17 //を除去します 
18 document.bodyあります。removeChild(eleLink)。
19}。
コードをコピー

 3:ブラウザの低いバージョンと互換性のビルドに使用される製品を、ダウンロードするには、安全かつ簡単な方法をある方法FORMDATAラベルのダウンロードで

直接コードで、私は自分の将来の参照のために直接コードに、読んでいない読み取ることができないので、それは、実際の経験と平和サイン事業の承認を必要とするので、

コードをコピー
。関数downfile 1(ファイル){ 
 {2 IF(== NULL || ==未定義ファイルファイル)
 3リターン; 
 4}。
 5ナンス= Math.floor(Math.random()*(Math.floor(100)CONST -数学。 (1)))+ Math.ceil(1).ceil; 
 6タイムスタンプ=一定のparseInt(Date.now()/ 1000); 
 7 =定数{searchParams。
 8 storageKey:file.storageKey、//ファイルシステムキー。
 9 TokenType。 :2、アプリケーションの種類//トークン、1:アップロード、2:ダウンロード、5:プレビュー
10ナンス、
11タイムスタンプ、
12 ALGである: 'MD5'、
13}であり; 
14 Axios({URL:「/ドキュメント/ API /ファイル/トークン/ applyToken '方法:' GET」、paramsは:searchParams})
15 .then(RES => { 
16 IF(res.status === 200 res.data ||!ある){ 
17リターン。
18}(!res.data.success){もし 
34 CONST URL = '$ {nodeURLは} /ノード/ダウンロード/ビュー/ $ {file.storageKey} `; //文件下载路径
19 constのMSG = res.data.msg && res.data.msg.length> 0?res.data.msg: '下载失败!'; 
20 message.error(MSG)。
21 
他の22}、{ 
23 RES = res.data || {}; 
24 LET含量= {}; 
25 IF(res.data.contentList && res.data.contentList.length> 0){ 
26含量= res.data.contentList [0]。
27} 
28リターン{ 
29 nodeURLは:content.nodeUrl、
30トークン:content.token 
31} 
32} 
33})を(({nodeURLは、トークン})=> { 
36 form.setAttribute( "方法"、 "GET");
35 CONST形式=のdocument.createElement( 'フォーム')。
37 form.setAttribute( "名前"、 "theForm")。
38 form.setAttribute( "ターゲット"、 "_self"); 
39 form.setAttribute( 'スタイル'、 '表示:なし'); 
40 form.setAttribute( "アクション"は、url); 
41 document.body.appendChild(形態)
42 
43 CONST newinput_fileToken =のdocument.createElement( '入力')。
44 newinput_fileToken.setAttribute( 'タイプ'、 '隠されました'); 
45 newinput_fileToken.setAttribute( '名前'、 'fileToken')。
46 newinput_fileToken.setAttribute(トークン'値')
47 
48 CONST newinput_fileName =ドキュメント。createElement( '入力')。
49 newinput_fileName.setAttribute( 'タイプ'、 '隠されました');
50 newinput_fileName。
51 newinput_fileName.setAttribute( '値'、file.name)
52 
53 form.appendChild(newinput_fileToken)。
54 form.appendChild(newinput_fileName)。
55 
56 form.submit()。
57 document.theForm.parentNode.removeChild(形態)
58}); 
59}

おすすめ

転載: www.cnblogs.com/zwjun/p/12623294.html