Javascript 如何使用axios将文件上载到Dropbox

Javascript 如何使用axios将文件上载到Dropbox,javascript,axios,dropbox,dropbox-api,Javascript,Axios,Dropbox,Dropbox Api,我需要用axios将文件上传到Dropbox。这是我的密码: const uploadToExternalService=异步函数uploadToExternalService(令牌、内容){ 试一试{ 让res=等待axios({ 网址:'https://api-content.dropbox.com/1/files_put/auto/“+”文件名“, 方法:'放', //超时:8000, 标题:{ 授权:“持票人”+代币, “内容类型”:“文本/普通”, 正文:内容 } }) 如果(res.

我需要用
axios
将文件上传到Dropbox。这是我的密码:

const uploadToExternalService=异步函数uploadToExternalService(令牌、内容){
试一试{
让res=等待axios({
网址:'https://api-content.dropbox.com/1/files_put/auto/“+”文件名“,
方法:'放',
//超时:8000,
标题:{
授权:“持票人”+代币,
“内容类型”:“文本/普通”,
正文:内容
}
})
如果(res.status==200){
//测试你想要的状态等
console.log(res.status)
}
如果(res.status==400){
console.log(res)
}
返回资源数据
}
捕捉(错误){
控制台错误(err);
}
}
上传到外部服务(SECRET_KEY,req.file)。然后(res=>console.log(res));

我收到错误请求失败,状态代码为400

您使用的dropbox v1 API已正式退役。为什么不使用v2

对于您的问题,请尝试将正文发送到
标题之外

headers: {
  Authorization: 'Bearer ' + token,
  'Content-Type': 'text/plain'
},
body: content
更正代码:

const uploadToExternalService = async function uploadToExternalService(token, content) {
        try {
            let res = await axios({
                url: 'https://api-content.dropbox.com/1/files_put/auto/'+'file_name',
                method: 'put',
                // timeout: 8000,
                headers: {
                    Authorization: 'Bearer ' + token,
                    'Content-Type': 'text/plain'
                },
                body: content
            })
            if(res.status == 200){
                // test for status you want, etc
                console.log(res.status)
            }
            if(res.status == 400){
                console.log(res)
            }
            return res.data
        }
        catch (err) {
            console.error(err);
        }
    }

uploadToExternalService(SECRET_KEY, req.file).then(res => console.log(res));

最终,我使用
dropbox-v2-api
找到了一个解决方案。希望这个答案能为其他社区成员提供一个有用的代码示例,尽管该解决方案是在不使用axios的情况下实现的

从“dropbox-v2-api”导入dropboxV2Api;
从“fs”导入fs;
//认证
const dropbox=dropboxV2Api.authenticate({
令牌:DROPBOX\u SECRET\u密钥
});
//配置参数
const params=Object.freeze({
资源:“文件/上传”,
参数:{
路径:'/file_name.docx'
},
readStream:fs.createReadStream(文件路径)
//filePath:要上载到Dropbox的本地文件的路径
});
让dropboxPromise=新承诺(函数(解析、拒绝){
dropbox(参数、函数(错误、结果){
如果(错误){
拒绝(错误);
}否则{
决心(结果);
}
});
});
等待dropboxPromise.then(函数(resultObj){
console.log(“文件上传\确定”)
}).catch(函数(err){
console.log(错误消息)
});

SpiritOfDragon,您忘记更改回复中的url。v2 url假设如下:
https://api-content.dropbox.com/2/files/upload/
。不幸的是,这没有多大帮助。对于滞留在这里的所有其他人,仍然获得400[参考交叉链接]。此解决方案似乎不适用于大于150MB的文件。以上所有内容都可以使用流上传。