コンテンツソース:
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}