【问题标题】:Upload file to google drive using api with phonegap使用带有phonegap的api将文件上传到谷歌驱动器
【发布时间】:2016-03-15 05:17:30
【问题描述】:

如果我错了,请纠正我,但根据我阅读的常见问题解答,我读到 javascript 客户端库 https://developers.google.com/api-client-library/javascript/reference/referencedocs 仅用于 Web 应用程序。我正在使用 phonegap 制作一个移动应用程序,其中用户应该能够将图片上传到谷歌驱动器。我正在浏览这些链接: https://developers.google.com/drive/v2/reference/files/insert

如您所见,它使用 javascript 客户端库来上传文件。有没有一种方法可以在不使用该库的情况下做到这一点。如果是这样,我该如何使用纯 js 或 jquery?

谢谢


感谢JunYoung ...我能够完成您登录和授权的部分。现在我要做的是将文件上传到我的云端硬盘。我看到的所有示例都使用 JS 客户端库。 https://developers.google.com/drive/quickstart-js 我想执行相同但不使用 gapi.client.request 。我想使用简单的 POST。这是我的代码

          const boundary = '-------314159265358979323846';
          const delimiter = "\r\n--" + boundary + "\r\n";
          const close_delim = "\r\n--" + boundary + "--";

          var reader = new FileReader();
          var fileContent = this.$.fileInput.getFiles()[0];
          reader.readAsBinaryString(fileContent);
          reader.onload = function(e) {
              var contentType = fileContent.type || 'application/octet-stream';
              var metadata = {
              'title': fileContent.name,
              'mimeType': contentType
              };
              var base64Data = btoa(reader.result);
              var multipartRequestBody =
              delimiter +
              'Content-Type: application/json\r\n\r\n' + JSON.stringify(metadata) + delimiter + 'Content-Type: ' + contentType + '\r\n' + 'Content-Transfer-Encoding: base64\r\n' + '\r\n' + base64Data + close_delim;

              var driveAjax = new enyo.Ajax({
                     url: 'https://www.googleapis.com/upload/drive/v2/files',
                     method: 'POST',
                     contentType: 'multipart/mixed; boundary="' + boundary + '"',
                     postBody: multipartRequestBody
                  });
              driveAjax.response(this, "uploadSuccess");
              driveAjax.error(this, "processError");
              driveAjax.go({
                    uploadType:'multipart'
              });

如您所见,我已将 gapi.client.request 部分替换为简单的 ajax 调用。但这似乎不起作用。顺便说一句,我正在使用 enyo js 框架。你能发现这有什么问题吗?

【问题讨论】:

  • 您可以在类似的 SO question 上查看我的答案,以防您在将 Google Drive 集成到您的 Cordova 应用时仍然遇到问题

标签: cordova google-drive-api


【解决方案1】:

将 Drive API 与 Phonegap 集成是否有任何问题?

Drive API 基本上是 HTTP 请求,都可以使用纯 Javascript 完成。因此,您可以对 Files.insert() 使用 jQuery AJAX 调用。但是,我建议您使用 Javascript 客户端。这是OAuth using JS client library 的示例。请在您的 Phonegap 应用程序中尝试此示例,如果有任何问题,请再次提问。

【讨论】:

猜你喜欢
  • 2013-04-20
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
相关资源
最近更新 更多