axios nodejs 上传图片,NodeJS,Axios-将文件从本地服务器发布到另一台服务器

I have an API endpoint that lets the client post their csv to our server then post it to someone else server. I have done our server part which save uploaded file to our server, but I can't get the other part done. I keep getting error { message: 'File not found', code: 400 } which may mean the file never reach the server. I'm using axios as an agent, does anyone know how to get this done? Thanks.

// file = uploaded file

const form_data = new FormData();

form_data.append("file", fs.createReadStream(file.path));

const request_config = {

method: "post",

url: url,

headers: {

"Authorization": "Bearer " + access_token,

"Content-Type": "multipart/form-data"

},

data: form_data

};

return axios(request_config);

Update

As axios doc states as below and the API I'm trying to call requires a file

// data is the data to be sent as the request body

// Only applicable for request methods 'PUT', 'POST', and 'PATCH'

// When no transformRequest is set, must be of one of the following types:

// - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams

// - Browser only: FormData, File, Blob

// - Node only: Stream, Buffer

Is there any way to make axios send a file as a whole? Thanks.

解决方案

I'm thinking the createReadStream is your issue because its async. try this.

Since createReadStream extends the event emitter, we can "listen" for when it finishes/ends.

var newFile = fs.createReadStream(file.path);

// personally I'd function out the inner body here and just call

// to the function and pass in the newFile

newFile.on('end', function() {

const form_data = new FormData();

form_data.append("file", newFile);

const request_config = {

method: "post",

url: url,

headers: {

"Authorization": "Bearer " + access_token,

"Content-Type": "multipart/form-data"

},

data: form_data

};

return axios(request_config);

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值