Мне нужно загрузить файл из браузера на Google Диск. Это мой код загрузки: (files
массив файлов получить от <input type="file">
)Драйвер REST API - загрузка многофайлового файла jquery
var boundary = "foo_bar_baz";
const delimiter = "\r\n--" + boundary + "\r\n";
const close_delim = "\r\n--" + boundary + "--";
var contentType = doc.mimeType;
var metadata = {
"title": doc.name,
"mimeType": doc.mimeType
};
var reader = new FileReader();
reader.onload = function(e){
var multipartRequestBody =
delimiter + 'Content-Type: application/json\r\n\r\n' +
JSON.stringify(metadata) +
delimiter + 'Content-Type: ' + contentType + '\r\n' + '\r\n' +
e.target.result +
close_delim;
$.ajax({
url: 'https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart',
type: 'POST',
headers: {
"Authorization": 'Bearer ' + luminDriveAccessToken,
"Content-Type": 'multipart/related; boundary="'+ boundary + '"'
},
success: function() {
console.log('>>> Done uploading.');
},
error: _handleUploadErrors,
data: multipartRequestBody,
cache: false,
contentType: false,
processData: false,
crossDomain: true
});
};
reader.readAsBinaryString(files[0]);
Когда я запускаю этот скрипт, файл был загружен на мой Google Drive (правильное название, правильное MIMETYPE), но содержимое файла (Google Диск не может открыть его). Когда я загружаю файл на свой компьютер, я не могу его открыть и Я понимаю, что размер загружаемого файла немного больше исходного(например, файл .docx: 15,4 КБ по сравнению с 11.3 КБ).
Так что, я думаю, проблема связана с содержимым файла перед отправкой его на сервер. Но я еще не знаю, как это исправить. Надеюсь, вы, ребята, могли бы помочь!
Вы пытались отправить с использованием FormData API? – charlietfl
У меня нет (на самом деле я не знаю, как это сделать). Я просто следую API здесь: https://developers.google.com/drive/v2/web/manage-uploads – sonlexqt