如何下载谷歌CDN图片



在谷歌中,图像以CDN URL类型托管,我试图从该CDN下载图像,但它在C#中引发了一个错误。使用了下面所附的c#代码。

using (var webClient = new WebClient())
{
byte[] imageBytes = webClient.DownloadData(imageUUl);
System.IO.File.WriteAllBytes(@"E:Tempimg2.jpeg", imageBytes);
}

网址:https://lh6.googleusercontent.com/vpsleVfq12ZnALrwbIUqCTa0Fpqa5C8IUViGkESOSqvHshQpKCyOq4wsRfTcadG2WYgcW3m0yq_6M2l_IrSM3qr35spIML9iyIHEULwRu4mWw4CUjCwpVfiWnd5MXPImMw=w1280

提前谢谢。

在GCP Cloud CDN中,您可以使用带有身份验证的签名URL或签名Cookie来授权用户,并为他们提供访问受保护内容的限时令牌,因此Cloud CDN不会阻止没有签名查询参数或Cloud CDN Cookie HTTP Cookie的请求。它拒绝具有无效(或格式错误(请求参数的请求,因此我建议查看您的浏览器客户端安全设置;如何管理对您的CDN URL的身份验证。如果允许安全策略,某些客户端默认存储cookie,还请查看您的CDN URL安全入口是如何配置的,因为当您使用带有签名cookie的CDN URL时,对签名和未签名请求的响应将分别缓存,因此对有效签名请求的成功响应永远不会用于服务未签名请求。另一方面,如果您使用已签名的CDN URL在有限的时间内限制对文件的安全访问,则需要首先遵循以下步骤:

  • 确保已启用云CDN。

  • 如有必要,请更新至最新版本的Google Cloud CLI:

    `gcloud components update`
    
  • 为已签名的URL创建密钥

    要创建关键点,请执行以下步骤。

    1.In the Google Cloud Console, go to the Cloud CDN page.
    2.Click Add origin. 
    3.Select an HTTP(S) load balancer as the origin.
    4.Select backend services or backend buckets. For each one
    -Click Configure, and then click Add signing key.
    -Under Name, give the new signing key a name.
    -Under the Key creation method, select Automatically generate or Let me enter.
    - If you're entering your own key, type the key into the text field.
    - Click Done.
    - Under Cache entry maximum age, provide a value, and select a Unit of time from the drop-down list. You can choose among second, minute, hour, and day. The maximum amount of time is three (3) days.
    5. Click Save.
    6. Click Add.
    
  • 正在配置云存储权限。

在运行以下命令之前,请至少向项目中的后端存储桶添加一个密钥;否则,该命令将失败并出现错误,因为在为项目添加一个或多个密钥之前,不会创建云CDN缓存填充服务帐户。将PROJECT_NUM替换为项目编号,将BUCKET替换为存储桶。

gsutil iam ch serviceAccount:service-PROJECT_NUM@cloud-cdn-fill.iam.gserviceaccount.com:objectViewer gs://BUCKET

  • 列出后端服务或后端存储桶上的密钥,运行以下命令:

    gcloud compute backend-services describe BACKEND_NAME

    gcloud compute backend-buckets describe BACKEND_NAME

  • 对URL进行签名并分发。

您可以使用gcloud compute sign-url命令或使用自己编写的代码对URL进行签名。如果您需要许多签名的URL,自定义代码可以提供更好的性能。此命令从KEY_FILE_NAME读取并解码base64url编码的键值,然后输出可用于GET的签名URL或针对给定URL的HEAD请求。

gcloud compute sign-url 
"https://example.com/media/video.mp4" 
--key-name my-test-key 
--expires-in 30m 
--key-file sign-url-key-file

在这个链接中,你可以找到更多与已签名的URL和已签名的cookie相关的信息。

您不能以这种方式下载映像,因为您需要提供OAuth令牌。并且您需要启用配置文件范围

var GoogleAuth; // Google Auth object.
function initClient() {
gapi.client.init({
'apiKey': 'YOUR_API_KEY',
'clientId': 'YOUR_CLIENT_ID',
'scope': 'https://www.googleapis.com/auth/userinfo.profile',
'discoveryDocs': ['https://discovery.googleapis.com/discovery/v1/apis']
}).then(function () {
GoogleAuth = gapi.auth2.getAuthInstance();
// Listen for sign-in state changes.
GoogleAuth.isSignedIn.listen(updateSigninStatus);
});
}

相关内容

  • 没有找到相关文章

最新更新