Не удалось открыть zip-файл, поскольку он поврежден после загрузки с Google Диска REST API. Код следующим образом:
gapi.client.drive.files.get({'fileId':id,alt:'media'}).then((res)=>{
const zipblob = new Blob([res.body])
let a = document.createElement('a')
a.download = 'sample.zip'
a.href = window.URL.createObjectURL(zipblob)
a.click()
}
Заголовок ответа от Drive REST API выглядит следующим образом:
Content-Type: "application/zip"
cache-control: "private, max-age=0, must-revalidate"
content-length: "216"
content-type: "text/plain;charset=UTF-8"
date: "Tue, 12 Mar 2019 04:40:39 GMT"
expires: "Tue, 12 Mar 2019 04:40:39 GMT"
server: "UploadServer"
vary: "Origin, X-Origin"
x-guploader-uploadid: "AEnB2Upp9nbCpCrydypTCBqEH-Yc8p7cpRbvDLBGyxb9t4n1TRGux7Zcvw_2fSd3ibEav2q4cw6luDRoMNwzc5ytX57LsEwHbg"
Я где-то нашел решение, и оно работает.
function str2bytes(str){
var bytes = new Uint8Array(str.length)
for (var i=0; i<str.length; i++){
bytes[i] = str.charCodeAt(i);
}
return bytes;
}
gapi.client.drive.files.get({'fileId':id,alt:'media'}).then((res)=>{
const zipblob = new Blob([str2bytes(res.body)])
let a = document.createElement('a')
a.download = 'sample.zip'
a.href = window.URL.createObjectURL(zipblob)
a.click()
})
@Phil, я создал файл только с содержимым «asdfasdf», сжал его и загрузил на свой Google Диск для этого тестирования. Вот почему размер файла составляет всего 216 байт. Я где-то нашел решение, и оно работает. Понятия не имею, почему это работает, поскольку я все еще только начинающий программист. Кстати, спасибо за помощь.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Здесь особо нечего делать. При размере 216 байт файл кажется немного маленьким. Вы пробовали открыть его в текстовом/шестнадцатеричном редакторе?