【发布时间】:2021-04-23 20:00:09
【问题描述】:
我得到这样的图像二进制文件:
axios.get("image-url.jpg")
我需要使用响应向另一台服务器发出新的 POST 请求
const form = new FormData();
const url = "post-url-here.com";
form.append(
"file",
new ReadableStream(Buffer.from(file)),
"image-test.jpg"
);
const config = {
headers: {
...form.getHeaders(),
Authorization:
"Bearer token-here",
},
};
axios.post(url, form, config);
不幸的是,这不起作用。我得到的回应是:
data: {
message: 'This file is not compatible with the picture engine, please try another one',
error: 'bad_request',
status: 400,
cause: []
}
我怎样才能正确地做到这一点?
编辑: form.getheaders 正在将此标头添加到请求中:
'content-type': 'multipart/form-data; boundary=--------------------------783115116498484087556627'
所有请求标头:
headers: {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'multipart/form-data; boundary=--------------------------918731250556909112992344',
Authorization: 'Bearer token-here',
'User-Agent': 'axios/0.21.1'
},
所有请求信息:
_header: 'POST /pictures/items/upload HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'Content-Type: multipart/form-data; boundary=--------------------------116660171215340291632150\r\n' +
'Authorization: Bearer token-here\r\n' +
'User-Agent: axios/0.21.1\r\n' +
'Host: api.mercadolibre.com\r\n' +
'Connection: close\r\n' +
'Transfer-Encoding: chunked\r\n' +
'\r\n',
【问题讨论】:
-
您是否将图像“image-url.jpg”保存在硬盘上,然后选择将其发布到服务器或需要即时执行?例如:从 url 获取图像 -> 发布到服务器而不保存图像?
-
调试 form.getHeaders() ,或者使用监听套接字记录整个 Post 请求,我们可以查看整个 Post resquest header
-
是的,我确实需要即时进行。我正在编辑添加 .getHeaders 信息的问题
-
content-type 只是整个 Header 的一部分。请把整个标题贴出来好吗?
-
是的,这是 .getHeaders 生成的唯一标头。我正在再次编辑请求的所有最终标头
标签: javascript node.js file-upload multipart