【问题标题】:Dropbox V2 file upload end point - invalid Content Type - dropbox-cor s-hackDropbox V2 文件上传端点 - 无效的内容类型 - dropbox-for s-hack
【发布时间】:2017-10-28 02:50:55
【问题描述】:

我正在尝试使用 V2 端点进行文件上传。我相信内容标题设置正确,但我不断收到此错误。有人可以帮忙吗?

const request = require('request');
var fs = require('fs');

var apiArgs = '{ "path" : "/testfolder/Nespresso.zip", "mode" : "add", "autorename" : true, "mute" : false }' ;

var formData = {
    'data-binary': fs.createReadStream("F:\\Nespresso.zip")
};

const options = {
    headers: {
        'Authorization' : 'Bearer ############',
        'Content-Type' : 'application/octet-stream',
        'Dropbox-API-Arg': apiArgs
    },
    formData : formData
};

request.post('https://content.dropboxapi.com/2/files/upload', options, function(err, res, body) {
    //let json = JSON.parse(body);
    console.log(body);
    if(res)
    console.log(res.statusCode);

    if(err)
    console.log(err);
});

节点错误:

调用 API 函数“files/upload”时出错:HTTP“Content-Type”标头错误:“m ultipart/表单数据;边界=--------------298294176382492406791283" .期待“application/octet-stream”、“text/plain; charset=dropbox-cor”之一 窝棚”。 400

【问题讨论】:

标签: javascript node.js dropbox dropbox-api


【解决方案1】:

不确定data-binary 是否有效请求配置对象的formData 属性。见https://github.com/request/request#multipartform-data-multipart-form-uploads。更重要的是,Dropbox 需要 application/octet-stream 类型数据,而不是您提供的 multipart/form-data。怎么样:

const request = require('request');
var fs = require('fs');

const options = {
    url: 'https://content.dropboxapi.com/2/files/upload',
    headers: {
        'Authorization' : 'Bearer ############',
        'Content-Type' : 'application/octet-stream',
        'Dropbox-API-Arg': JSON.stringify({
            'path' : '/package.json'
        })
    }
};

const uploadStream = request.post(options, function(err, res, body) {
    //let json = JSON.parse(body);
    console.log(body);
    if(res)
    console.log(res.statusCode);

    if(err)
    console.log(err);
});

fs.createReadStream('./package.json').pipe(uploadStream);

【讨论】:

  • 没错,文件数据应该在请求正文中发送,但问题中的代码将其作为表单数据发送,导致requestContent-Type设置为multipart/form-data。另一种选择是将文件数据放在options 中的body 字段(而不是formData)中。
猜你喜欢
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
相关资源
最近更新 更多