gpt4 book ai didi

javascript - 如何从 node.js 服务器将 javascript 缓冲区作为文件发送

转载 作者:搜寻专家 更新时间:2023-11-01 00:08:11 25 4
gpt4 key购买 nike

我有一个带有 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();

在服务器上,我有一个正在运行的带有 express 模块的 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 header ,但没有任何运气。

最佳答案

var blobObject = new Blob([xhr.respomse], {type: 'image/png'}); 
navigator.msSaveBlob(blobObject, "print.png");
blobObject.msClose();

我在客户端使用 navigator.msSaveBlob 函数在 Internet Explorer 中保存文件,希望对你有用

关于javascript - 如何从 node.js 服务器将 javascript 缓冲区作为文件发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24355626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com