要上传到Google云端硬盘的网址

Hen*_*son 6 google-drive-api

我可以使用任何网址直接上传到Google云端硬盘吗?例如,我的服务器上有一个文件http://example.com/file.doc,我希望将其上传到Google云端硬盘,例如:http://google.com/?upload=http://example.com/file.doc

这样做的方法是什么?

Tan*_*ike 13

这个解决方法怎么样?遗憾的是,没有在Google API上未经授权直接上传文件的网址.所以我建议一个解决方法.我认为这种方法可能很容易实现你想做的事情.请将此视为几个答案之一.

我认为使用Web Apps,您可以实现您想要做的事情.此解决方法的流程如下.

流 :

1.示例脚本

  • 创建独立脚本.
    • 您也可以在绑定脚本中执行此流程.这里使用独立脚本.
  • 复制并粘贴以下示例脚本,然后保存.

请跑doGet(e).这样,虽然发生了错误,但可以完成授权过程.

function doGet(e) {
  var blob = UrlFetchApp.fetch(e.parameters.url).getBlob();
  var id = DriveApp.createFile(blob).getId();
  return ContentService.createTextOutput(id);
}
Run Code Online (Sandbox Code Playgroud)

2.部署Web应用程序.

  • 在脚本ediror上,在菜单栏中,选择Publish - > Deploy as Web App.
  • 在"项目版本:"处,输入字符串.
  • 在"执行应用程序:"中,选择"我".
  • 在"谁有权访问该应用:"中,选择"任何人,甚至匿名".
  • 单击"部署"按钮.
  • 请复制"当前网络应用网址:".网址是https://script.google.com/macros/s/#####/exec.
    • 您可以使用此URL上传文件.
  • 单击"确定".

3.从URL上传文件

  • 查询参数是url=http://example.com/file.doc.
  • 您可以使用浏览器file.doc访问此URL https://script.google.com/macros/s/#####/exec?url=http://example.com/file.doc进行上传.
    • 在此示例脚本中,将在Google云端硬盘的根文件夹中创建上传文件.

注意 :

  • 关于Web Apps,如果您更新脚本,请将Web Apps重新部署为新版本.这样,反映了更新的脚本.
  • 此示例脚本非常简单.所以请根据您的环境进行修改.那时,如果你有任何问题,请随时告诉我.
  • 在这种情况下,当用户使用Web Apps URL上传文件时,文件会上传到部署了Web Apps的所有者的Google云端硬盘.因为脚本仅作为所有者运行.

如果这对你没用,我很抱歉.

编辑:

我知道你想使用php和javascript从URL上传文件(我在这里使用了jQuery.).如果我的理解有误,请告诉我.doGet(e)使用这些脚本需要使用Google Apps脚本.首先,请复制并粘贴doGet(e)和部署Web应用程序.对于这两个脚本,Google Drive上创建的文件的文件ID将作为响应返回.

通过php上传

<?php
    $url = 'https://script.google.com/macros/s/#####/exec?url=http://example.com/file.doc';
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl,CURLOPT_FOLLOWLOCATION, true);
    $response = curl_exec($curl);
    echo $response;
    curl_close($curl);
?>
Run Code Online (Sandbox Code Playgroud)

通过jQuery上传

$.get("https://script.google.com/macros/s/#####/exec?url=http://example.com/file.doc", function(res) {
    console.log(res);
});
Run Code Online (Sandbox Code Playgroud)

参考文献:

编辑2:

如果您希望用户将文件上传到自己的Google云端硬盘,请按以下流程部署Web Apps.

流 :

1.示例脚本

  • 创建独立脚本.
    • 您也可以在绑定脚本中执行此流程.这里使用独立脚本.
  • 复制并粘贴以下示例脚本,然后保存.

请跑doGet(e).这样,虽然发生了错误,但可以完成授权过程.

function doGet(e) {
  var blob = UrlFetchApp.fetch(e.parameters.url).getBlob();
  var id = DriveApp.createFile(blob).getId();
  return ContentService.createTextOutput(id);
}
Run Code Online (Sandbox Code Playgroud)

2.部署Web应用程序.

  • 在脚本ediror上,在菜单栏中,选择Publish - > Deploy as Web App.
  • 在"项目版本:"处,输入字符串.
  • 在"将应用程序执行为:"中,选择"用户访问Web应用程序".
  • 在"谁有权访问该应用:"中,选择"任意人".
  • 单击"部署"按钮.
  • 请复制"当前网络应用网址:".网址是https://script.google.com/macros/s/#####/exec.
    • 您可以使用此URL上传文件.
  • 单击"确定".

3.从URL上传文件

  • 查询参数是url=http://example.com/file.doc.
  • 您可以使用浏览器file.doc访问此URL https://script.google.com/macros/s/#####/exec?url=http://example.com/file.doc进行上传.
    • 在此示例脚本中,将在Google云端硬盘的根文件夹中创建上传文件.
  • 当用户访问URL时https://script.google.com/macros/s/#####/exec?url=http://example.com/file.doc,将显示Google的登录屏幕.
  • 登录Google后,将显示授权屏幕.
  • 通过授权,file.doc上传到用户的Google云端硬盘.因为脚本是作为每个用户运行的.

注意 :

  • 请仅由一个用户部署Web Apps.并请在所有用户之间共享Web Apps的URL.
  • 在这种情况下,用户使用每个用户的浏览器,因为浏览器需要授权过程.
    • 如果您将其用作HTML,则可以将URL https://script.google.com/macros/s/#####/exec?url=http://example.com/file.doc作为链接.
  • 关于Web Apps,如果您更新脚本,请将Web Apps重新部署为新版本.这样,反映了更新的脚本.

编辑3:

在使用Web Apps的情况下,使用何时<div class="google-upload" data-url="http://example.com/file.doc">,示例脚本如下.

用户点击时Upload,file.doc会上传到用户的云端硬盘.要使用此示例脚本,请使用上面"编辑2"部署Web Apps检索到的URL.

在这种情况下,向每个用户显示登录屏幕.用户需要在登录后授权使用API​​,方法是单击屏幕上的按钮.这是你想要的吗?

<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.js"></script>
  </head>
  <body>
    <div class="google-upload" data-url="http://example.com/file.doc">
      <span style="background-color: #ddd">Upload</span>
    </div>
    <script>
      $(function() {
        $(".google-upload").click(function() {
          var url = "https://script.google.com/macros/s/#####/exec"; // Please input the URL here.
          var withQuery = url + "?url=";
          window.open(withQuery + $('.google-upload').attr("data-url"), "_blank", "width=600,height=600,scrollbars=1");
        });
      });
    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)


Amr*_*hna 11

随着 colab 的引入,现在事情变得容易多了。

  1. 转到 google colab,然后将 google drive 安装到工作区中。

  2. 安装驱动器后/content,假设您在 中有一个目录dirUrl,请在笔记本单元中运行以下命令。

    !wget -P /content/drive/My\ Drive/dirUrl https://www.aclweb.org/anthology/P19-1111.pdf

事实上,我发现这种方法甚至比像多云这样的高级服务还要快。