1

使用谷歌驱动器 API 从谷歌驱动器下载图像后,作为响应,我得到的是我下载的图像的 PNG 块文本。但是,我无法从该文本中获取 png 文件。如何通过 javaScript 将其转换为 PNG?

    // google drive download file function
    function downloadFile(Url, callback) {
      console.log("download url-->",file.downloadUrl)
        // if (file.downloadUrl) 
        if (Url) 
        {
          var accessToken = gapi.auth.getToken().access_token;
          var xhr = new XMLHttpRequest();
          // xhr.open('GET', file.downloadUrl);
          xhr.open('GET',Url);
          xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
          xhr.onload = function() {
            callback(xhr.responseText);
          };
          xhr.onerror = function() {
            callback(null);
          };
          xhr.send();
        } else {
          callback(null);
        }
    }

 downloadFile("https://www.googleapis.com/drive/v2/files/id?alt=media&source=downloadUrl", 
  function(resp){
        console.log("resp",resp)
  })

这是我得到的块文本文件 这是我得到的块文本文件

4

1 回答 1

0

您应该使用xhr.response,因为xhr.responseText返回文本,正如您已经发现的那样。

此外,您必须定义xhr.type,否则xhr.response也会返回文本。

您可以设置xhr.type="arraybuffer"为在数组缓冲区中获取文件内容,或者xhr.type="blob",如果您想获取 blob。例如,您可以使用 blob 和FileSaver.js( https://github.com/eligrey/FileSaver.js/ ) 下载该文件。

于 2021-08-19T12:02:46.573 回答