以下のような手順でExcelファイルのダウンロードを実現しようとしています。
- jQuery.getでサーバーに要求
- サーバー側(Node.js)でExcelファイルを作成
- Expressの「res.download」でファイル送信
- クライアントで受取、createObjectURLでダウンロード開始
上記実装後、テストとしてダウンロードされたファイルを確認したところ、ファイルが破損しておりました。
** 確認したこと
・サーバーで作成されたExcelファイルが正しくできているか ⇒ 問題なし
・[サーバーで作成されたファイル] と [受信したファイル] の比較 ⇒バイナリエディタで比較したところ、先頭部分が若干異なっている
・サーバー側のファイルunlink(下記コード※1)をコメントアウト ⇒ 破損は変わらず
どうすれば、破損せずにクライアントでダウンロードができるでしょうか?
宜しくお願いします。
具体的なコードは以下の通りです。
サーバー側
javascript
1 res.header('Content-Type', 'application/vnd.ms-excel'); 2 res.download(fileURL, fileName, function (err) { 3 if (err) { 4 console.log('error.'); 5 } else { 6 console.log('download for ' + fileName + ' done.'); 7 //※1 8 fs.unlink(fileURL); 9 } 10 });
クライアント側
javascript
1 $.get('/EXCEL/', function (data) { 2 var downloadData = new Blob([data], { type: 'application/vnd.ms-excel' }); 3 var filename = 'list.xlsx' 4 if (window.navigator.msSaveBlob) { 5 window.navigator.msSaveBlob(downloadData, filename); 6 } else { 7 var downloadUrl = (window.URL || window.webkitURL).createObjectURL(downloadData); 8 var link = document.createElement('a'); 9 link.href = downloadUrl; 10 link.download = filename; 11 link.click(); 12 (window.URL || window.webkitURL).revokeObjectURL(downloadUrl); 13 } 14 });

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/01 09:44