フロントエンドでpostでファイルをダウンロード

1674 ワード

2つの一般的な方法
  • window.open
  • blobを利用して
  • をダウンロード
    blobって何?
    Blob,Binary Large Objectの略で,バイナリ型の大きなオブジェクトを表す.Blobの概念は、いくつかのデータベースで使用されています.例えば、MYSQLのBLOBタイプは、バイナリデータを表すコンテナです.Webでは、Blobタイプのオブジェクトは可変の類似ファイルオブジェクトの元のデータを表し、一般的にはBlobオブジェクトはバイナリデータであるが、これは類似ファイルオブジェクトのバイナリデータであるため、Fileオブジェクトを操作するようにBlobオブジェクトを操作することができ、実際にはFileはBlobから継承される.
    要求に合わせて使う
    サービス側はこのようなストリームファイルフォーマットを返します.実はこれは表のファイルストリームかもしれません.postダウンロードでどうやってダウンロードしますか?くだらないことを言わないで直接コードをつけます.
    fetch('Excel.do',{
    			method: 'post',
    			headers: {
    				'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    				'Content-Type' : 'application/x-www-form-urlencoded'
    			},
    			'credentials': 'include',
    			body: Serialize(this.getSearchParam()).substr(1)
    		})
    		.then(res => res.blob())
    	    .then(blob => {
    	        console.log(blob)
    	        var a = document.createElement('a');
    	        var url = window.URL.createObjectURL(blob);
    	        var filename = time+'createUserSkuExcel.xls';
    	        a.href = url;
    	        a.download = filename;
    	        a.click();
    	        window.URL.revokeObjectURL(url);
    	    })
    

    注意事項
  • ファイル名
  • を知っておく必要があります
  • 互換性は現在、現代ブラウザ
  • のみサポートされています.