[英]How to send javascript buffer as a file from node.js server
我有带有javascript脚本的html网页,它使用XMLHttpRequest从服务器获取文件。 我希望浏览器打开标准的“下载文件”窗口,这样用户就可以保存文件了。 代码很简单:
var xhr;
xhr=new XMLHttpRequest();
xhr.onreadystatechange=function()
{
if (xhr.readyState==4 && xhr.status==200)
{
alert("File successfully received");
}
}
xhr.open("GET”,”http://localhost:17001/filedl?param=1",true);
xhr.send();
在服务器上,我有一个运行带有快速模块的node.js应用程序。 该应用程序正在生成缓冲区数据并将其作为文件发送回客户端。 代码在这里:
var express = require('express');
var app = express();
app.get('/filedl', function(req, res){
var pngBuffer = new Buffer("generated png goes here");
res.setHeader('Content-Description','File Transfer');
res.setHeader('Content-Disposition', 'attachment; filename=print.png');
res.setHeader('Content-Type', 'application/octet-stream');
res.end(pngBuffer);
});
app.listen(17001);
但是,我无法在浏览器中打开“另存为”对话框。 我只是从我的服务器获得一个文本形式的缓冲区响应。
我尝试过设置不同的响应http标头,但没有任何运气。
var blobObject = new Blob([xhr.respomse], {type: 'image/png'});
navigator.msSaveBlob(blobObject, "print.png");
blobObject.msClose();
我在客户端使用navigator.msSaveBlob函数在Internet Explorer中保存文件,希望对你有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.