2013-08-31 46 views
0

我遇到了一個似乎對我來說很簡單的問題,但我無法爲我的生活弄清楚。我有一個使用ExpressJS的簡單NodeJS服務器,它基本驗證電子郵件並授予用戶對zip文件的訪問權限。問題是,在Chrome和Firefox上這樣做效果很好,但在IE上打開F12開發者控制檯之前不會。我瀏覽了在這裏遇到的所有文檔以及其他各種網站,但沒有提到類似的問題。NodeJS下載文件無法在IE上工作

我的猜測是某些設置未在IE上啓用,但我已驗證我已啓用活動腳本,並降低了我的安全級別。這個問題發生在我所有的IE用戶身上,我希望有人能爲我解答。

var stat = fs.statSync('myFile.zip'); 
res.writeHead(200, { 
'Content-Type': 'application/octet-stream', 
     'Content-Length': stat.size, 
     'Content-disposition' : 'attachment; filename="myFile.zip' 
}); 
console.log('Starting download: ' + 'myFile.zip'); 
var stream = fs.createReadStream('myFile.zip', { bufferSize: 64 * 1024 }); 
stream.pipe(res); 

//res.download('myFile.zip', "myFile.zip"); 

正如你可以看到我都試過ExpressJS的res.downloadstream.pipe有同樣的結果。

+0

什麼錯誤? – OneOfOne

回答

0

你錯過了一個雙引號,添加它有幫助嗎?

'Content-disposition' : 'attachment; filename="myFile.zip"' 

如果不工作,也許嘗試:

res.writeHead(200, { 
     'Content-Length': stat.size, 
}); 
res.attachment('myFile.zip'); 
+1

很遺憾,缺少報價,但不幸的是不能解決它。我也用你建議的方式做了一些測試來下載文件,我仍然得到相同的結果,在我打開F12之前我沒有下載開始。 –

+1

我最終發現問題,它實際上是在客戶端,顯然console.log不能很好地與IE瀏覽器兼容。 –