从网址下载Google云端硬盘文件,然后通过帖子发送到后端

时间:2017-11-27 12:31:27

标签: javascript php google-api google-drive-api

我试图在javascript中从url(chrome驱动文件)下载文件;并希望将它发送到我的后端(php - laravel)。

var url = file.downloadUrl !== undefined ? file.webContentLink : file.exportLinks['application/pdf'];

console.log(url) // if I go to url, it downloads the file

if (url !== undefined) {
      var remote = new XMLHttpRequest();
      remote.open('GET', url);
      remote.setRequestHeader('Authorization', 'Bearer ' + gapi.client.getToken().access_token);
      remote.setRequestHeader('Access-Control-Allow-Origin', '*');
      remote.onload = function(e) {
          vm.handle_download(remote.responseText, file, 200); // do something with the fetched content;
      };
      remote.onerror = function(e) {
             vm.handle_download('error response', null, remote.statusText);
      };
      remote.send();
} else vm.handle_download('no downloadable url', {
     file: null,
     status: 'error'
});

和句柄

handle_download: function (content, file, status) {
        if (status !== 200) {
            console.log('error occured on status')
            return;
        }
}
  

无法加载https://drive.google.com/uc?id=1D12321ofd4CNG-m9_Mp4aiDcnibNf&export=download:对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://test.dev”访问。

1 个答案:

答案 0 :(得分:1)

这是由于网络中same origin policy引起的预期行为。由于您是出于测试目的而执行此操作,请尝试使用此Allow-Control-Allow-Origin Chrome扩展程序。

您可以在Using CORS tutorial中详细了解如何实现此功能。  此SO post也可能提供额外的见解。