Я использую API Google Диска, чтобы получить BLOB файл и попытка передать эти данные BLOB в JSZip для архивирования, но у меня проблемы.
Конкретный фрагмент выглядит следующим образом:
var settings = {
"async": true,
"crossDomain": true,
"url": "https://www.googleapis.com/drive/v3/files/"+file_id+"?alt=media",
"method": "GET",
"headers": {
"responseType": "blob",
"Authorization": "Bearer "+bearer_token
}
}
$.ajax(settings).done(function (response, status, xhr) {
console.log(response);
zip.file(filename, response);
zip.generateAsync({type:"blob"}, function updateCallback(metadata) {
var msg = "progression : " + metadata.percent.toFixed(2) + " %";
if(metadata.currentFile) {
msg += ", current file = " + metadata.currentFile;
}
showMessage(msg);
updatePercent(metadata.percent|0);
})
.then(function callback(blob) {
saveAs(blob, "example.zip");
showMessage("done !");
}, function (e) {
showError(e);
});
});
Я использовал Postman для тестирования API, которое давало ожидаемые результаты. Я попытался заархивировать несколько файлов изображений/pdf/zip, и все они вернулись поврежденными. Единственное, что работало до сих пор, — это PHP-файл. API Google Диска правильно возвращает данные BLOB, и все выглядит правильно в сгенерированном JSZip zip-файле (имя файла, размер файла и т. д.), но при открытии файла из zip я получаю ошибки, указывающие на то, что файл поврежден.
Любые идеи?
Заранее спасибо за помощь!