如何发送POST请求与内容类型文件:在节点JS应用程序/八位字节流

时间:2019-02-02 05:43:01

标签: node.js request mime-types content-type

我想上传一些Facebook的服务器。他们的官方文档指出:

  

通过从对话框中的道理,你可以提交以下调用我们的图形API提交您的.zip文件。请注意,我们使用的是视频子域名,但是这是故意的,因为该URL被配置为接收更大上传

curl -X POST https://graph-video.facebook.com/{App ID}/assets 
  -F 'access_token={ASSET UPLOAD ACCESS TOKEN}' 
  -F 'type=BUNDLE' 
  -F 'asset=@./{YOUR GAME}.zip' 
  -F 'comment=Graph API upload'

我正在尝试使用request模块将此curl请求转换为node.js。

            const myzip = zipDir+file.appName+".zip"
            console.log(myzip)
            var url = "https://graph-video.facebook.com/"+file.appId+"/assets";
            const options = {
                url: url,
                headers: {
                  "Content-Type": "application/octet-stream"
                }
              }
            var req = request.post(options, function (err, resp, body) {
                console.log('REQUEST RESULTS:', err, resp.statusCode, body);
                if (err) {
                   console.log('Error!');
                  reject();
                } else {
                   console.log('URL: ' + body);
                  resolve();
                }
              });
              var form = req.form();
              var zipReadStream = fs.createReadStream(myzip,{encoding: "binary"})
              zipReadStream.setEncoding('binary')
              form.append('asset', zipReadStream);
              form.append("access_token", file.token);
              form.append("type", "BUNDLE");
              form.append("comment", mycomment)

尽管我已将标头设置为"Content-Type": "application/octet-stream",但仍然从Facebook得到错误消息

OAuth "Facebook Platform" "invalid_request" "(#100) Invalid file. Expected file of one of the following types: application/octet-stream"

当我尝试记录我的请求时,尽管我已经明确指定了此内容,但我收到的内容是'Content-Type': 'multipart/form-data而不是application/octet-stream事件。

1 个答案:

答案 0 :(得分:1)

如果要作为表单的一部分上传数据,则必须为multipart/form-data使用Content-Type

可以为每个文件设置表单上特定文件的Content-Type,但似乎Facebook不需要这样做的额外数据。

不要为您的HTTP请求设置Content-Type,您应该可以,因为请求模块会为您设置它。此外,您还可以在这里找到的文档:https://github.com/request/request#multipartform-data-multipart-form-uploads