Я пытаюсь использовать Dropbox API для отправки файлов в определенную папку Dropbox через веб-интерфейс с помощью Ajax.Поврежденные файлы при загрузке в Dropbox через Ajax
Вот мой код:
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--
Я предполагаю, что это почему я не могу открывать такие файлы, как изображения. Я пробовал несколько решений, но ни один из них не может решить эту проблему. Что я делаю не так ? Благодаря !
Это сделал трюк, спасибо! Но я до сих пор не понимаю, зачем ему нужен тип «Файл», потому что почти все примеры, которые я нашел в Интернете, использовали такие объекты FormData, как этот (очень) популярный вопрос: http://stackoverflow.com/questions/166221/как-кан-I-Upload-файлы-асинхронно? RQ = 1 – Flobesst