gpt4 book ai didi

node.js - 将文本作为下载文件发送

转载 作者:搜寻专家 更新时间:2023-10-31 22:29:47 24 4
gpt4 key购买 nike

尝试将简单的文本字符串作为文件发送,根据请求以特定名称下载。似乎无法弄清楚为什么此代码会失败。

var text_ready = "This is a content of a txt file."
res.setHeader('Content-type', "application/octet-stream");
res.setHeader('Content-disposition', 'attachment; filename=file.txt');
res.send( new Buffer(text_ready) );

当这段代码执行时,我只收到一个 XHR 响应(以该字符串作为内容),但没有启动下载。但我预计收到此响应将强制浏览器下载一个文件,名称为 file.txt,其内容为上述字符串。

如何解决?我做错了什么?

也许这很重要:在 Windows 上的 Chrome 41 下工作。

编辑:看来我必须描述得更深入一些。工作流程如下:

  • 页面包含一个表格单元格,每个单元格都附加了角度 ng-click 事件
  • 当单击 GET 请求时,使用 jQuery 的 $.get("/download") 将请求发送到“/download”
  • 服务器有路由来处理这个 GET 请求
  • 我需要实现的是将某个文本字符串发送给用户并保存为文件(以便在点击时启动下载,简而言之)

测试

  1. 有效当我通过将此 url 输入到地址栏并按 enter 手动导航到该 url 时
  2. 当我用鼠标单击该单元格时,它不起作用 - 发送了请求,收到了响应,但没有启动下载。

最佳答案

在我的 node.js 版本 0.12.2、Windows 7、Chrome 和 Firefox 上测试

var http = require('http');

http.createServer(function (req, res) {
var text_ready = "This is a content of a txt file."


res.writeHead(200, {'Content-Type': 'application/force-download','Content-disposition':'attachment; filename=file.txt'});

res.end( text_ready );
}).listen(8080, '127.0.0.1');
console.log('Server running at http://127.0.0.1:8080/');

我认为您没有运行最新版本的 node.js。也许您可以仅更改 Content-type header ,这可能会起作用。另外,您可以使用 res.end( new Buffer(text_ready) ); .我已经测试过了。

已编辑:如何使用 javascript(jQuery onclick) 调用从 node.js 下载文件:

Javascript:

<script type="text/javascript">
$(document).ready(function(){
$("#button").on('click',function(){
window.location = 'http://127.0.0.1:1337/';
});
});
</script>

HTML:

<button id="button">Download</button>

我确定您知道如何从 jQuery 重写为 angularJS。 :)我认为这比使用 Ajax 调用更好。如果您真的需要 Ajax,我会告诉您如何去做。

关于node.js - 将文本作为下载文件发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29556282/

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