上传包含请求和表单数据的多部分表单

时间:2019-05-16 19:30:18

标签: node.js forms request

我正在向API提交图片。

当我进入邮递员时,我可以提交给API并正常工作:

curl -X POST \
  https://myURL.com \
  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
  -F 'stringPart=string' \
  -F myfile.jpg=@/path/to/file/myfile.jpg

我的代码如下:

const request = require("request");
require('request-to-curl');
const fs = require("fs");
var FormData = require('form-data');

let url = 'https://myURL.com';
let headers = {
    'content-type': 'multipart/form-data'
};
const formData = {
    // Pass a simple key-value pair
    stringPart: 'string',
    'myfile.jpg': fs.createReadStream(__dirname + '/myfile.jpg'),
};
request.post({url:url, headers: headers, formData: formData}, function optionalCallback(err, httpResponse, body) {
    console.log(httpResponse.request.req.toCurl());
    if (err) {
        return console.error('upload failed:', err);
    }
    console.log('Upload successful!  Server responded with:', body);
});

这从服务器获取错误。 输出的curl语句看起来像这样,因为它在页面上显示,所以我已经切断了图像。

curl 'https://myURL.com' \
     -H 'content-type: multipart/form-data; boundary=--------------------------798817746202249113209224' \
--data-binary $'----------------------------798817746202249113209224\r\nContent-Disposition: form-data; name="stringPart"\r\n\r\nstring\r\n----------------------------798817746202249113209224\r\nContent-Disposition: form-data; name="myfile.jpg"; filename="myfile.jpg"\r\nContent-Type: image/jpeg\r\n\r\n\ufffd\ufffd\ufffd\ufffd\x00\x10JFIF\x00\x01\x01\x00\x00H\x00H\x00\x00\ufffd\ufffd\x00XExif\x00\x00MM\x00*\x00\x00\x00\x08\x00\x02\x01\x12\x00\x03\x00\x00\x00\x01\x00\x01\x00\x00\ufffdi\x00\x04\x00\x00\x00\x01\x00\x00\x00&\x00\x00\x00\x00\x00\x03\ufffd\x01\x00\x03\x00\x00\x00\x01\x00\x01\x00\x00\ufffd\x02\x00\x04\x00\x00\x00\x01\x00\x00\x01\ufffd\x03\x00\x04\x00\x00\x00\x01\x00\x00\x02\ufffd\x00\x00\x00\x00\ufffd\ufffd\x008Photoshop 3.0\x008BIM\x04\x04\x00\x00\x00\x00\x00\x008BIM\x04% 

...持续了一段时间。

如何获取代码以匹配有效的curl语句? 谢谢。

0 个答案:

没有答案
相关问题