2013-08-31 34 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浏览器兼容。 –