2017-10-04 75 views
0

我正在修改应用程序以使用私有CloudFront而不是直接从S3。CloudfFont GetObjectRequest相当于从S3下载文件

我已经能够根据需要创建签名的URL并填充图片框。

我无法找到CloudFront的等效GetObjectRequest的...

for (int num = 1; num < 16; num++) 
{ 

    GetObjectRequest request = new GetObjectRequest 
    { 
     BucketName = ContainerName, 
     Key = tempDownload + @"/" + num + ".jpg" 
    }; 

    try 
    { 
     //Issue request and remember to dispose of the response 
     using (GetObjectResponse response = s3Client.GetObject(request)) 
     { 
      string dest = Path.Combine(newFileFolder, tempDownload + num + ".jpg"); 
      if (!File.Exists(dest)) 
      { 
       response.WriteResponseStreamToFile(dest); 
      } 
     } 
    } 
} 

我试图通过的Cloudfront下载文件到应用用户的硬盘。

+0

你为什么要创建签名的URL和你做了什么? – Kannaiyan

回答

2

CloudFront没有相当于GetObject。 CloudFront旨在通过HTTP/HTTPS协议提取数据。

如果要下载到用户计算机的文件是公共的,那么您可以通过CloudFront分发http/https URL简单访问它们。

如果要下载的文件是专用文件,则需要通过CloudFront分发http/https URL将Origin Access标识设置为Serve Private Content或使用Pre-signed URLs

+0

感谢您的帮助,但我已经创建了预填写的URL,这些URL在我的应用程序中填充PictureBox时正在工作。我正在使用帮助很多的Cloudberry应用程序。我在寻找的是通过CloudFront的签名URL请求获取S3文件并保存到用户硬盘上的代码? – Cfence

+0

有一些示例C#代码可在我提供的链接中生成CloudFront预签名URL。使用该URL,您将不会使用AWS SDK来下载文件。相反,您将使用C#的“HttpClient”(例如)将该文件作为标准URL下载。 –

+0

非常感谢!这只是我需要的帮助。 – Cfence