【问题标题】:Image Gallery hosted in Google Drive Folder托管在 Google Drive 文件夹中的图片库
【发布时间】:2016-01-03 08:29:56
【问题描述】:

我一直在寻找一种在网站上创建画廊的方法,其中包含来自我的谷歌驱动器文件夹中的图像。我在这里分享了:https://drive.google.com/drive/u/0/folders/0Bwx-OwnNeIvwRldSVlU5SGN0dGs 里面是一个简单的 HTML,还有一个画廊文件夹,里面有怪物卡车和可爱动物的图片。目标是创建一个画廊,人们可以上传井的图像;怪物卡车和可爱的动物。

我一直在寻找各种方法来实现这一点,这就是我目前发现的:

简而言之,我想要实现的是在我的 G-Drive 的公共共享文件夹中获取图像的 ID。然后使用这些 id 通过 JS 在 HTML 中创建画廊。

我的 HTML 现在的样子:

index.html

<h1>Cute Animals & <br> 
Monster Vehicles</h1>

<div id="gallery">
<!-- all divs will append here -->
</div>

我对 Drive SDK 的研究:

我一直在这里使用“尝试一下”部分来弄清楚我需要做什么。 https://developers.google.com/drive/v2/reference/children/list#examples

请求结果:GET https://www.googleapis.com/drive/v2/files/0Bwx-OwnNeIvwRG5rNzZ6OURSNEk/children?fields=items%2Fid

响应结果:

200 OK
- SHOW HEADERS -
{
"items": [
{
 "id": "0Bwx-OwnNeIvwaFZXVzVmMl9ILUU"
},
{
 "id": "0Bwx-OwnNeIvwVk1DTEpnR0J6VHc"
},
{
 "id": "0Bwx-OwnNeIvwblBHLVEza0hxY2s"
},
{
 "id": "0Bwx-OwnNeIvwTkZZVXp0dDg4bXc"
},
{
 "id": "0Bwx-OwnNeIvwZTN1YzZrcm53eFE"
},
{
 "id": "0Bwx-OwnNeIvwYkZ5ZXpjWHhKcFk"
}]}

我希望脚本做什么:

script.js

var imageIds = <!-- ids from the the response --> ;
var x = imageIds.length;
for (var i = 0; i < x; i++) {
 <!-- create a <div> --> 
}
//See below*

创建一个 div: 在 for 循环中,它将创建一个 &lt;div&gt;,其中包含一个特定的 "class" 和一个 &lt;img&gt; 在该 div 内,以及一个 "src="http://drive.google.com/uc?export=view&amp;id=IMAGE-ID",其中“IMAGE- ID”是从 “响应” 中获得的。然后&lt;div&gt; 将附加到 index.html 中的&lt;div id="gallery"&gt;

我想要的最终 HTML 看起来像:

index.html:

<h1>Cute Animals & <br> 
Monster Vehicles</h1>

<div id="gallery">

   <div class="brick">
      <img src="http://drive.google.com/uc?export=view&id=0Bwx-OwnNeIvwaFZXVzVmMl9ILUU">
   </div>

   <div class="brick">
      <img src="http://drive.google.com/uc?export=view&id=0Bwx-OwnNeIvwVk1DTEpnR0J6VHc">
   </div>

   <div class="brick">
      <img src="http://drive.google.com/uc?export=view&id=0Bwx-OwnNeIvwblBHLVEza0hxY2s">
   </div>

 <!-- and so on ... -->

</div>

我现在不确定的是,需要如何对其进行身份验证才能从 G-Drive 文件夹中获取图像 ID。这可以通过 Google 云端硬盘本身及其托管链接托管,也可以通过 Google Apps 脚本创建,以及在那里提供 HTML 的功能,这将使身份验证更容易因为您可以直接从云端硬盘获取所有内容。

我不明白为什么这里找不到,不涉及付款。如果每个人都有机会从 G-Drive 文件夹中的图像创建图像库,那就太好了。

非常希望您能在这方面提供帮助。非常感谢。

【问题讨论】:

  • 驱动器托管已弃用
  • 您想使用 Apps 脚本执行此操作吗?然后,您无需任何身份验证即可执行此操作。但是,如果您将您的网站放到 App Engine 上而不是 cloud.google.com/appengine/docs,您需要进行身份验证才能访问您自己的 gdrive 文件。最简单的选择可能是使用 Apps 脚本,而不是将图像的链接放入 html 中,而是将它们嵌入,如下所示。 stackoverflow.com/questions/2329364/… 这样您就不必共享图像文件。但话又说回来,App Engine 是更强大和更专业的解决方案。
  • 顺便说一句。试试这个。 fizerkhan.com/blog/posts/… 它解释了如何将 App Engine 用作简单的文件托管服务(尽管它能够做的远不止这些)。
  • 如果您决定使用 Apps 脚本,请再提供一个链接。如何将文件上传到使用 Apps 脚本编写的 Web 应用程序。 stackoverflow.com/questions/15670392/…

标签: javascript html google-apps-script google-drive-api


【解决方案1】:

首先,关于代码本身,大概是这样的:

document.addEventListener('DOMContentLoaded', function() {
  var response = {
    "items": [{
      "id": "0Bwx-OwnNeIvwaFZXVzVmMl9ILUU"
    }, {
      "id": "0Bwx-OwnNeIvwVk1DTEpnR0J6VHc"
    }, {
      "id": "0Bwx-OwnNeIvwblBHLVEza0hxY2s"
    }, {
      "id": "0Bwx-OwnNeIvwTkZZVXp0dDg4bXc"
    }, {
      "id": "0Bwx-OwnNeIvwZTN1YzZrcm53eFE"
    }, {
      "id": "0Bwx-OwnNeIvwYkZ5ZXpjWHhKcFk"
    }]
  };

  var imageIds = response.items.map(function(item) {
    return '<div class="brick"><img src="http://drive.google.com/uc?export=view&id=' + item.id + '"></div>';
  });

  document.getElementById('gallery').insertAdjacentHTML('afterbegin', imageIds.join(''));
});
&lt;div id="gallery"&gt;&lt;/div&gt;

关于授权,take a look at their documentation

【讨论】:

  • 哇,这太棒了,非常感谢 :) 我正在查看授权,但我应该在这里查看吗?:developers.google.com/drive/v2/reference/children/list#examples 因为还有一个关于“儿童授权”的部分:列表”,我认为我应该使用的是?
  • @WilliamLarsenBang 是的,好多了。我发送给您的其他文档是关于一般身份验证的(例如:如何生成 Web 令牌等)。您的链接假定​​您已经了解基础知识,以及您应该如何使用身份验证来获取孩子。两者都是必需的,如果您还不知道如何进行身份验证:)
  • 我明白了,坦率地说我对身份验证一无所知,但我真的应该学习它,因为我也需要它用于其他项目。一个不同的问题?有没有预加载你写的这个函数?
猜你喜欢
  • 2018-08-18
  • 1970-01-01
  • 2016-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
相关资源
最近更新 更多