场景:与dcm API相关的存储桶中存储了多个文件夹和许多文件。(单击,展示,每日汇总文件等)。 https://console.cloud.google.com/storage/browser/dcmaccountno
是否可以使用rest api下载文件,当前我具有服务帐户和私钥。 我们对goog云存储没有太多了解,因此任何小小的帮助都是非常可观的。
谢谢您的帮助!
答案 0 :(得分:2)
使用rest API,您可以按照以下链接中已经介绍的以下方式从Google存储空间下载/上传文件:
参考:https://stackoverflow.com/a/53955058/4345389
您可以通过以下方式使用DownloadData方法来代替WebClient的UploadData方法:
// Create a new WebClient instance.
using (WebClient client= new WebClient())
{
client.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + bearerToken);
client.Headers.Add(HttpRequestHeader.ContentType, "application/octet-stream");
// Download the Web resource and save it into a data buffer.
byte[] bytes = client.DownloadData(body.SourceUrl);
MemoryStream memoryStream = new MemoryStream(bytes);
// TODO write further funcitonality to write the memorystream
}
根据您的要求进行一些调整。
答案 1 :(得分:1)
您可以调用两个REST API中的任何一个:JSON或XML。无论如何,您都需要从documentation中详细了解的OAuth 2.0获取授权访问令牌,然后将cURL与GET Object Request一起使用:
JSON API:
curl -X GET \
-H "Authorization: Bearer [OAUTH2_TOKEN]" \
-o "[SAVE_TO_LOCATION]" \
"https://www.googleapis.com/storage/v1/b/[BUCKET_NAME]/o/[OBJECT_NAME]?alt=media"
XML API:
curl -X GET \
-H "Authorization: Bearer [OAUTH2_TOKEN]" \
-o "[SAVE_TO_LOCATION]" \
"https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]"
请注意,对于多个文件,您必须对请求进行编程,因此,如果要轻松下载存储桶或子目录中的所有对象,最好使用gsutil。