如何使用Node + Express从http get响应中创建文件而不设置响应类型

问题描述 投票:0回答:1

我正在使用axios从Jira Server下载文件,但是,当我将请求类型设置为'stream'时,来自Jira的响应指出我未通过身份验证。删除后,我收到以下答复(摘录):

v�Ģ �����������Tjj1c�N{;;&oo��Pvwf=�������P�V4�_�T�ݡ; �O��|��M\�Oʥ�L/ t%��N���/ |�g9i;��^���N��|1b�Qq��q� ��ڤ�^��$ {o�'����[����vWD�cF\N�����?zw�irer�z#p�f�T�L7�5H�w ��A��,�q�#�����}V�)�+6gO�3�5$�}8"�bm���;��P�.�m?������zo l�v�G)���,�E7id�JN}�[ �r��Z���)�������o��F�ZN��O�FD���/�����G�QяD����mw�� M��0A��_0�&���Jî!�m����Za �Q����������ƃ�S�����To��3 D�#:��`g�]��| y%Fހs ��D

使用下面的代码:

axios.get('http://localhost:8080/secure/attachmentzip/' + req.body.issue.id + ".zip",                             
                            {
                                auth: {
                                    username: '-',
                                    password: '-'
                                } 
                            }
                            )
                                .then(function (response) {
                                    console.log(response.data)
                                     })
                                .catch(function (error) {
                                    console.log(error);
                                })

是否可以根据上述响应创建文件?

node.js express jira-rest-api
1个回答
0
投票

[过去处理文件或二进制数据时,使用axios遇到了多个问题,建议使用requestrequest-promisegot

const request = require('request-promise');
const fs = require('fs').promises;

request.get('http://localhost:8080/secure/attachmentzip/' + req.body.issue.id + ".zip", {
    auth: {
        username: '-',
        password: '-'
    },
    encoding: null // important to avoid utf8 conversion
}).then(buffer => {
    return fs.writeFile('file.zip', buffer); // fs.promises
}).then(() => console.log('saved'))
.catch(console.error)

尽管正在下载文件,但是如果文件很大,最好使用流。

const request = require('request'); // better to use request when using streams

request.get('http://localhost:8080/secure/attachmentzip/' + req.body.issue.id + ".zip", {
    auth: {
        username: '-',
        password: '-'
    }
}).pipe(fs.createWriteStream('file.zip'))

注:无法测试该URL,无法为您提供特定于axios的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.