我尝试使用Dropbox API通过使用Ajax的Web界面将文件发送到特定的Dropbox文件夹。
这是我的代码:
function UploadFile(token, callback) {
var fileName = $('input[type=file]')[0].files[0].name,
fileData = new FormData($('#file-upload')[0]),
dbxHeaderParams = {
'path': '/' + fileName,
'mode': { '.tag': 'add' },
'autorename': true
};
$.ajax({
url: 'https://content.dropboxapi.com/2/files/upload',
type: 'POST',
headers: {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/octet-stream',
'Dropbox-API-Arg': JSON.stringify(dbxHeaderParams)
},
data: fileData,
processData: false,
contentType: false,
success: function(result) {
console.log('NICE BRO');
callback();
},
error: function(error) {
console.error(error);
callback();
}
});
}
此代码有效:文件上传到我的Dropbox文件夹,我可以打开它们。他们甚至拥有正确的名称和(几乎)正确的尺寸。但问题是它们都已损坏,因为在此过程中会添加一些行。
以下是一个示例:如果我要上传包含此内容的.txt
文件:
harder better faster stronger
上传到我的Dropbox后,它将如下所示:
-----------------------------2308927457834
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain
harder better faster stronger
-----------------------------2308927457834--
我认为这就是为什么我无法打开像图像这样的文件的原因。我尝试了几种解决方案,但没有一种能解决这个问题。我究竟做错了什么 ?谢谢 !
答案 0 :(得分:1)
查看HTML的相关部分会很有用,但看起来问题是您为上传调用提供了println!("{}", x)
个对象,而不是FormData
。
尝试替换此行:
File
用这个:
fileData = new FormData($('#file-upload')[0]),