Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Dropbox V2文件上载终点-无效内容类型-Dropbox cor s-hack_Javascript_Node.js_Dropbox_Dropbox Api - Fatal编程技术网

Javascript Dropbox V2文件上载终点-无效内容类型-Dropbox cor s-hack

Javascript Dropbox V2文件上载终点-无效内容类型-Dropbox cor s-hack,javascript,node.js,dropbox,dropbox-api,Javascript,Node.js,Dropbox,Dropbox Api,我正在尝试使用V2端点进行文件上载。我相信内容标题设置正确,但我一直收到这个错误。有人能帮忙吗 const request = require('request'); var fs = require('fs'); var apiArgs = '{ "path" : "/testfolder/Nespresso.zip", "mode" : "add", "autorename" : true, "mute" : false }' ; var formData = { 'data-b

我正在尝试使用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函数文件/上载时出错:错误的HTTP内容类型头:m 多部件/表格数据;边界=------298294176382492406791283 . 需要一个应用程序/八位字节流,文本/普通;字符集=dropbox cor s-hack。 400

不确定数据二进制文件是否为请求配置对象的有效formData属性。看见此外,Dropbox需要应用程序/八位字节流类型的数据,而不是您提供的多部分/表单数据。那么:

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);

我希望这个答案能帮助您。没错,文件数据应该在请求正文中发送,但问题中的代码将其作为表单数据发送,导致请求将内容类型设置为multipart/form data。另一个选项是将文件数据放在body字段中,而不是选项中的formData。