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

时间:2017-12-15 13:50:07

标签: google-drive-api

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

这样做的方法是什么?

5 个答案:

答案 0 :(得分:10)

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

我认为使用网络应用程序,您可以实现您想要做的事情。此解决方法的流程如下:

流程:

1。示例脚本

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

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

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

2。部署Web应用程序。

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

3。从URL上传文件

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

注意:

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

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

编辑:

我知道您想使用php和javascript从URL上传文件(我在这里使用了jQuery。)。如果我的理解有误,请告诉我。使用这些脚本需要doGet(e) Google Apps脚本。首先,请复制并粘贴doGet(e)并部署Web应用。对于这两个脚本,Google云端硬盘上已创建文件的文件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);
?>

通过jQuery上传

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

参考文献:

编辑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);
}

2。部署Web应用程序。

  • 在脚本ediror上,在菜单栏中选择Publish - &gt;部署为Web App。
  • At&#34;项目版本:&#34;,输入字符串。
  • 在&#34;执行应用为:&#34;,选择&#34;用户访问网络应用&#34;
  • 在&#34;谁有权访问该应用:&#34;,选择&#34;任何人&#34;
  • 点击&#34;部署&#34;按钮。
  • 请复制&#34;当前的网络应用网址:&#34;。网址为https://script.google.com/macros/s/#####/exec
    • 您可以使用此网址上传文件。
  • 点击&#34;确定&#34;。

3。从URL上传文件

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

注意:

  • 请仅由一位用户部署Web Apps。请在所有用户之间共享Web Apps的URL。
  • 在这种情况下,用户使用每个用户的浏览器,因为浏览器需要授权过程。
    • 如果您将其用作HTML,则可以将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会上传到用户的云端硬盘。要使用此示例脚本,请使用上面使用部署Web Apps检索的URL&#34;编辑2&#34;。

在这种情况下,会向每个用户显示登录屏幕。用户需要在登录后授权使用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>

答案 1 :(得分:1)

看看Drive Uploader

https://driveuploader.com/

您可以创建自己的上传器并拥有相同的唯一网址,可以在您的用户之间分发。

希望有所帮助

答案 2 :(得分:1)

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

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

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

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

事实上,我发现这种方法甚至比multcloud之类的高级服务还要快。

答案 3 :(得分:0)

除了here on stackexcange建议的API解决方案之外,还有其他在线编码教程,其中包括一个tutorial by google

由于我不是黑客,所以我更喜欢使用完成的webapp。 MultiLoad似乎是最简单的方法,但还不够好。

如果您需要快速的上载速度到云中,并且由于上载速度很慢而不喜欢Google云端硬盘,那么我建议您通过MediaTube Desktop将最大1.5 GB的文件上载到Telegram Cloud。如果您使用UploadBot

,还支持从URL上传文件。

答案 4 :(得分:0)

是的,为什么不这样做,除了遵循这种大型编程方法之外,您还可以按照以下说明进行操作:

实际上,此过程很简单,您要做的就是获取要上传到Google驱动器的文件的直接URL,而无需先下载到计算机上

下一步是在您的PC或智能手机上下载电报。

第三,您必须使用电报机器人,然后提供指向该机器人的直接链接,然后它将其上传到您的Google驱动器。

有关更多详细信息和Bot手表 https://youtu.be/Tm6nMbssHcg