【问题标题】:how to imitate upload image with request in nodejs如何在nodejs中用请求模仿上传图片
【发布时间】:2014-09-01 13:10:23
【问题描述】:

我想用模块请求模仿上传图像,我通过chrome网络获取请求rayload,如下所示:

------------Ef1cH2gL6GI3ae0ei4Ef1cH2gL6GI3
Content-Disposition: form-data; name="Filename"

2033103.jpg
------------Ef1cH2gL6GI3ae0ei4Ef1cH2gL6GI3
Content-Disposition: form-data; name="FileType"

Image
------------Ef1cH2gL6GI3ae0ei4Ef1cH2gL6GI3
Content-Disposition: form-data; name="N"

1
------------Ef1cH2gL6GI3ae0ei4Ef1cH2gL6GI3
Content-Disposition: form-data; name="F"

MemberIDCard
------------Ef1cH2gL6GI3ae0ei4Ef1cH2gL6GI3
Content-Disposition: form-data; name="fileext"

*.jpg;*.png;*.gif
------------Ef1cH2gL6GI3ae0ei4Ef1cH2gL6GI3
Content-Disposition: form-data; name="folder"

/Transport/
------------Ef1cH2gL6GI3ae0ei4Ef1cH2gL6GI3
Content-Disposition: form-data; name="Filedata"; filename="2033103.jpg"
Content-Type: application/octet-stream


------------Ef1cH2gL6GI3ae0ei4Ef1cH2gL6GI3
Content-Disposition: form-data; name="Upload"

Submit Query
------------Ef1cH2gL6GI3ae0ei4Ef1cH2gL6GI3--

,我的代码是这样的:

request.post({
    uri: url,
    headers: {
        'content-type' : 'application/octet-stream'
    },
    form: {
        Filename: '2000.jpg',
        FileType: 'Image',
        N: 1,
        F: 'MemberIDCard',
        fileext: '*.jpg;*.png;*.gif',
        folder: '/Transport/',
        Upload: 'Submit Query'
    },
    body: 'http://t1.qpic.cn/mblogpic/bc65fe3404f5084b2d7e/2000.jpg'
}, function (error, response, body) {
    if (!error) {
        console.log(body);
    }
});

但是好像不行,怎么模仿这个上传图片?

【问题讨论】:

    标签: node.js image-uploading web-crawler


    【解决方案1】:

    如果您为form 选项使用文字对象,那么它将以application/x-www-form-urlencoded 发送表单。你需要做的是use the FormData API 发送multipart/form-data

    var r = request.post({
        uri: url
    }, function (error, response, body) {
        if (!error) {
            console.log(body);
        }
    });
    var form = r.form()
    form.append('Filename', '2000.jpg');
    form.append('FileType', 'Image');
    form.append('N', '1');
    form.append('F', 'MemberIDCard');
    form.append('fileext', '*.jpg;*.png;*.gif');
    form.append('folder', '/Transport/');
    form.append('Filedata', request('http://t1.qpic.cn/mblogpic/bc65fe3404f5084b2d7e/2000.jpg'));
    form.append('Upload', 'Submit Query');
    

    【讨论】:

      【解决方案2】:

      ,我使用needle模块,代码如下:

      var buffer = fs.readFileSync('xxxx.png');
      
      var data = { 
          Filename: 'xxxx.png', 
          FileType: 'Image', 
          N: 1, 
          F: 'MemberIDCard', 
          fileext: '.jpg;.png;*.gif', 
          folder: '/Transport/', 
          Upload: 'Submit Query', 
          Filedata: { 
              buffer : buffer, 
              filename : 'xxxx.png', 
              content_type : 'application/octet-stream' 
          } 
      }
      
      needle.post(uri, data, { multipart: true }, function(err, resp, body) {
          //do something... 
      }); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-08
        • 1970-01-01
        • 1970-01-01
        • 2020-02-11
        • 2017-06-28
        • 1970-01-01
        • 2020-08-04
        • 2019-03-21
        相关资源
        最近更新 更多