首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google云存储-从web下载文件

Google云存储-从web下载文件
EN

Stack Overflow用户
提问于 2015-02-27 02:02:20
回答 3查看 7.8K关注 0票数 9

我想在我的下一个项目中使用Google云存储。我的目标是跟踪各种网站并收集一些照片。因此,我阅读了gsutil的文档;我可以手动将文件下载到我的服务器上,并使用gsutil上传到google云存储。

下载和上传文件会在我的服务器上产生如此多的流量。有没有办法让google cloud直接从http下载文件?

EN

回答 3

Stack Overflow用户

发布于 2018-10-12 04:42:49

主要答案

在Google Cloud Shell中很容易做到这一点。似乎适用于所有文件大小:

代码语言:javascript
复制
 curl http://speedtest.tele2.net/10GB.zip | gsutil cp - gs://YOUR_BUCKET_NAME/10GB.zip

基本上,curl将数据直接传输到存储桶中。

备用文件(小于约4.6 GB的文件)

原始方法:只要您的下载小于约4.6 GB,就可以使用此方法。启动Cloud Shell (在GCP中登录到项目后顶部的第一个图标),并使用wget下载所需的文件。例如,要下载7-Zip类型:

代码语言:javascript
复制
wget https://www.7-zip.org/a/7z1805-x64.exe

现在,文件在Cloud Shell用户主页中,您可以使用gsutil命令将其复制到Google Cloud Storage存储桶:

代码语言:javascript
复制
gsutil cp ./7z1805-x64.exe gs://your_bucket_name/

备用(大于约4.6 GB)

如果文件大于4.6 GB,仍然可以挂载,但需要使用gcsfuse将存储桶挂载到您的Cloud Shell中:

在Cloud Shell用户主页中创建目录

代码语言:javascript
复制
 mkdir ~/mybucket

现在使用gcsfuse将存储桶挂载到该目录中:

代码语言:javascript
复制
 gcsfuse bucket_name ~/mybucket

将当前目录更改为挂载点目录:

代码语言:javascript
复制
 cd mybucket

(如果您想要获得一些乐趣,请运行"df -h“。以查看您在该挂载点中有多少空间)

现在使用wget将文件直接放入您的存储桶中(示例使用web上的10 web文件):

代码语言:javascript
复制
 wget https://speed.hetzner.de/10GB.bin
票数 22
EN

Stack Overflow用户

发布于 2015-02-27 06:10:16

Google云存储只接受直接数据。没有办法将URL传递给它,然后让它将内容保存为对象。

但是,您没有理由不能自己构建此功能。例如,您可以设置一个或多个专用的GCE instanceS来加载URL,然后将它们保存到GCS。Google对进入GCE的网络或从GCE进入一个区域内的GCS也不收费,这很有帮助。

票数 2
EN

Stack Overflow用户

发布于 2019-02-01 01:41:19

谷歌云存储提供了一个JSON API。您可以在应用程序中直接向JSON API发出HTTP请求,JSON API会将文件上传和下载流量直接定向到Google Cloud Storage。

要从公共Google Cloud Storage存储桶下载文件,需要向https://www.googleapis.com/storage/v1/b/<bucket>/o/<object>发出GET请求,其中<bucket>是您的Google Cloud Storage存储桶的名称,<object>是存储桶中文件的名称。这应该不需要任何身份验证就可以工作,但我自己还没有尝试过。您可以阅读此接口请求here的文档。

上传文件到公共存储桶有多种选择。简单的方法是向https://www.googleapis.com/upload/storage/v1/b/<bucket>/o发出POST请求,其中<bucket>是您的公共存储桶的名称。此方法最适用于大小小于5 MB的小文件。您可以阅读此接口请求here的文档。更大的上传将需要一种不同的方法,概述here。同样,我自己还没有尝试过这种方法,但它应该可以在没有身份验证的情况下工作。

如果您需要执行经过身份验证的上传和下载,事情就会变得有点复杂。Google Cloud Storage支持用于上传和下载的签名URL。这些URL描述了Google Cloud Storage上的特定操作,如上传或下载,并带有时间敏感的签名。拥有该URL的任何人都可以在Google Cloud Storage上执行指定的操作。它们可以安全地从服务器端传递到客户端。您可以在应用程序的后端生成已签名的URL,并将其传递到前端。然后,前端可以使用该URL直接上传到Google Cloud Storage。更多关于签名URL的信息here

最后,如果您需要对上传进行限制,例如最大文件大小,您将需要使用签名的策略文档,如here所述。这类似于签名的URL,因为它是一个应该由应用程序的后端生成的URL,并且包含一个时间敏感的签名。策略文档是Base64编码的,并包含在生成的URL中。它描述了上传的限制。URL签名包括策略文档,以便Google Cloud Storage知道将该特定策略应用于对该URL的上传请求。

来源:我和我的团队正在构建一个托管在Google Cloud平台上的全栈应用程序,该应用程序使用Google Cloud Storage进行上传和下载。我们正在使用签名的策略文档进行上传。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28749589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档