我想在我的下一个项目中使用Google云存储。我的目标是跟踪各种网站并收集一些照片。因此,我阅读了gsutil的文档;我可以手动将文件下载到我的服务器上,并使用gsutil上传到google云存储。
下载和上传文件会在我的服务器上产生如此多的流量。有没有办法让google cloud直接从http下载文件?
发布于 2018-10-12 04:42:49
主要答案
在Google Cloud Shell中很容易做到这一点。似乎适用于所有文件大小:
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类型:
wget https://www.7-zip.org/a/7z1805-x64.exe现在,文件在Cloud Shell用户主页中,您可以使用gsutil命令将其复制到Google Cloud Storage存储桶:
gsutil cp ./7z1805-x64.exe gs://your_bucket_name/备用(大于约4.6 GB)
如果文件大于4.6 GB,仍然可以挂载,但需要使用gcsfuse将存储桶挂载到您的Cloud Shell中:
在Cloud Shell用户主页中创建目录
mkdir ~/mybucket现在使用gcsfuse将存储桶挂载到该目录中:
gcsfuse bucket_name ~/mybucket将当前目录更改为挂载点目录:
cd mybucket(如果您想要获得一些乐趣,请运行"df -h“。以查看您在该挂载点中有多少空间)
现在使用wget将文件直接放入您的存储桶中(示例使用web上的10 web文件):
wget https://speed.hetzner.de/10GB.bin发布于 2015-02-27 06:10:16
Google云存储只接受直接数据。没有办法将URL传递给它,然后让它将内容保存为对象。
但是,您没有理由不能自己构建此功能。例如,您可以设置一个或多个专用的GCE instanceS来加载URL,然后将它们保存到GCS。Google对进入GCE的网络或从GCE进入一个区域内的GCS也不收费,这很有帮助。
发布于 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进行上传和下载。我们正在使用签名的策略文档进行上传。
https://stackoverflow.com/questions/28749589
复制相似问题