【问题标题】:create file for download on the fly within POST request在 POST 请求中动态创建文件以供下载
【发布时间】:2020-03-17 08:04:40
【问题描述】:

我试图弄清楚,是否可以创建一个文件而不将其存储在驱动器中,仅用于在 POST 请求中立即下载它。

const specialRequests = async (req, res, next) => { // POST request
    ... // processing
    let xmlString = ... // get processed xml string

    // create xml file from that xmlString 
    // initialise download of the file, dont save it
    let file = ???
    res.download(file);
};

如果可能的话怎么做

【问题讨论】:

    标签: javascript node.js express download


    【解决方案1】:

    download 方法明确设计用于传输“路径中的文件”。

    您可以使用一些数据创建下载,但不能使用该方法。

    res.set('Content-Type', 'text/xml');
    res.set('Content-Disposition', 'attachment; filename="example.xml"')
    res.send(xmlString);
    

    【讨论】:

    • 确实可以,但是在客户端,文件下载没有开始,有没有办法通过设置一些额外的标题来触发文件下载?
    • @Mevia — i.imgur.com/3UQpu2p.gif — 文件下载在我测试时开始。您的代码一定有其他问题。
    • 是的,是的,一切正常,我使用 fetch 将其作为 POST 请求执行,而当转换为 GET 请求时,它运行良好,谢谢
    • 这是您的问题的“使用提取”部分。您正在使用 JavaScript 显式处理响应,而不是使用浏览器的默认处理,如果您导航到它。如果您想在响应 ajax 请求时保存包含数据的文件,那么您需要编写 JavaScript 来执行此操作:stackoverflow.com/questions/4545311/…
    猜你喜欢
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    相关资源
    最近更新 更多