【问题标题】:Download file from POST request using node.js使用 node.js 从 POST 请求中下载文件
【发布时间】:2016-07-14 05:49:26
【问题描述】:

我有一个带有“导出到 excel”按钮的页面,我想在 node.js 中执行此操作。我在 Chrome 中使用 DevTools 发现,该页面在发布请求后下载文件,所以我需要重新创建它。

var request = require('request'),
fs = require('fs');

request.post(
    'http://pif.investfunds.ru/analitics/coefficients/',
    { form: { rmShowFunds: 'true',
              strFundName: '',
              sbxFundID: '',
              sbxObjFundInvest: '',
              SR: 'on',
              Srtn: 'on',
              date: '2016-06-30',
              Save2XLS: '1' } },
    function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body)
        }
    }
);

我认为,我应该使用类似的东西 request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))

但我不明白,如何。

谢谢你们。

【问题讨论】:

    标签: javascript node.js parsing download


    【解决方案1】:

    你没看错。所以你的代码会是这样的:

    request.post(
            'http://pif.investfunds.ru/analitics/coefficients/',
            {
                form: {
                    rmShowFunds: 'true',
                    strFundName: '',
                    sbxFundID: '',
                    sbxObjFundInvest: '',
                    SR: 'on',
                    Srtn: 'on',
                    date: '2016-06-30',
                    Save2XLS: '1'
                }
            }
        )
        .on('error', function(err) {
            // error handling
        })
        .on('finish', function(err) {
            // request is finished
        })
        .pipe(fs.createWriteStream('filename.xls'));
    

    【讨论】:

    • 谢谢,文件已创建,但无法打开。我添加了 console.log('文件已下载!');到 .on('finish'),但事件永远不会触发。
    • error 事件是否触发?您是否控制远程服务器以查看收到的具体请求?
    • 不,什么也没发生。不,我该怎么办?我打开了那个下载的文件,里面有一些数据,但我认为它的格式不正确或其他什么
    • 我刚刚运行了上面的代码,它工作正常(只是你应该用response 事件替换finish,但下载本身并不重要)。所以我收到了大小为 74752 的文件,其中包含带有一些数据(名称、百分比)的表。你执行一些额外的代码吗?你的环境是什么?
    • 是的,当然,大小是74752,我打开它,它有cp1251编码。我在 mac 上使用 atom 编辑器。所以,最后一件事是如何将下载的 xls 文件读入数组。 var workbook = xls.readFile('funds.xls'); 给出错误“不支持的文件”。但是,我认为,没关系,无论哪种方式,我都会失去这次黑客马拉松;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2012-10-11
    • 2014-10-10
    • 2015-06-26
    • 1970-01-01
    相关资源
    最近更新 更多