【发布时间】:2015-06-07 10:51:43
【问题描述】:
我无法(afaik)在我的(javascript 浏览器)客户端中创建文件,因此我希望我的服务器在将其发送回客户端之前执行此操作,然后客户端会打开一个对话框,询问用户将文件保存在哪里。
我如何实现这一目标?请参阅下面的内容,了解我目前拥有的内容。
客户
$.ajax({
type: 'POST',
dataType: 'json',
url: "http://localhost:5000/api/file",
data: postData,
contentType : 'application/json',
success: function (responseData, textStatus, jqXHR) {
// What do I put here?
},
error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
}
});
服务器
router.post('/file', function (request, response) {
var content = '';
request.on('data', function (data) {
content += data;
});
request.on('end', function () {
var contentAsJson = JSON.parse(content);
response.set("Content-Type", "text/plain");
response.set("Content-Length", contentAsJson.text.length);
response.set("Content-Disposition", 'attachment; filename='filename.txt');
response.send(contentAsJson.text);
});
});
【问题讨论】:
-
您遇到了什么问题?它是否返回错误的数据?它会引发某种错误吗?
-
我得到了按预期返回的数据。我思考的是让客户端通过对话将其存储为文件。但是@orcaman 只是告诉我,我根本不需要将它发送到我的服务器。
-
我仍然对“正确”(?)方式感兴趣吗?我认为@orcaman 的答案是一个 hack,因为我假设由于安全原因,javascript 客户端无法创建和保存文件。
-
@MdaG 不是黑客。适用于所有“普通”浏览器。唯一不受支持的是 blob 对象,它是在几年前引入的。
标签: javascript node.js