亚马逊S3上传与公共权限 [英] Amazon S3 upload with public permissions
本文介绍了亚马逊S3上传与公共权限的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用的是亚马逊的C#SDK,并试图要上传的文件,但默认情况下它已受限制的权限。我想予以公布,但我似乎无法找出如何做到这一点作为上载部分。
我斗是公开的,但是当我上传新文件中使用下面的code,我上传的文件是不公开的。
有没有人面前做到这一点?
公共类S3Uploader
{
私人字符串awsAccessKeyId;
私人字符串awsSecretAccessKey;
私人字符串bucketName;
私人Amazon.S3.Transfer.TransferUtility transferUtility;
公共S3Uploader(字符串bucketName)
{
this.bucketName = bucketName;
this.transferUtility =新Amazon.S3.Transfer.TransferUtility(XXXXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX);
}
公共无效UploadFile(字符串文件路径,字符串toPath)
{
AsyncCallback的回调=新的AsyncCallback(uploadComplete);
transferUtility.BeginUpload(文件路径,bucketName,toPath,回调,空);
}
私人无效uploadComplete(IAsyncResult的结果)
{
VAR X =结果;
}
}
解决方案
找到了,需要使用 TransferUtilityUploadRequest
:
公共类S3Uploader
{
私人字符串awsAccessKeyId;
私人字符串awsSecretAccessKey;
私人字符串bucketName;
私人Amazon.S3.Transfer.TransferUtility transferUtility;
公共S3Uploader(字符串bucketName)
{
this.bucketName = bucketName;
this.transferUtility =新Amazon.S3.Transfer.TransferUtility(XXXXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX);
}
公共无效UploadFile(字符串文件路径,字符串toPath)
{
AsyncCallback的回调=新的AsyncCallback(uploadComplete);
VAR uploadRequest =新TransferUtilityUploadRequest();
uploadRequest.FilePath =文件路径;
uploadRequest.BucketName =my_s3_bucket;
uploadRequest.Key = toPath;
uploadRequest.AddHeader(X-AMZ-ACL,大众阅读);
transferUtility.BeginUpload(uploadRequest,回调,空);
}
私人无效uploadComplete(IAsyncResult的结果)
{
VAR X =结果;
}
}
I'm using the Amazon C# SDK and trying to upload a file, but by default it has restricted permissions. I would like to make it publicly available, but I can't seem to find out how to do it as part of the upload.
My bucket is public, but when I upload a new file using the code below, the file I upload is not public.
Has anyone had to do this before?
public class S3Uploader
{
private string awsAccessKeyId;
private string awsSecretAccessKey;
private string bucketName;
private Amazon.S3.Transfer.TransferUtility transferUtility;
public S3Uploader(string bucketName)
{
this.bucketName = bucketName;
this.transferUtility = new Amazon.S3.Transfer.TransferUtility("XXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
}
public void UploadFile(string filePath, string toPath)
{
AsyncCallback callback = new AsyncCallback(uploadComplete);
transferUtility.BeginUpload(filePath, bucketName, toPath, callback, null);
}
private void uploadComplete(IAsyncResult result)
{
var x = result;
}
}
解决方案
Found it, need to use a TransferUtilityUploadRequest
:
public class S3Uploader
{
private string awsAccessKeyId;
private string awsSecretAccessKey;
private string bucketName;
private Amazon.S3.Transfer.TransferUtility transferUtility;
public S3Uploader(string bucketName)
{
this.bucketName = bucketName;
this.transferUtility = new Amazon.S3.Transfer.TransferUtility("XXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
}
public void UploadFile(string filePath, string toPath)
{
AsyncCallback callback = new AsyncCallback(uploadComplete);
var uploadRequest = new TransferUtilityUploadRequest();
uploadRequest.FilePath = filePath;
uploadRequest.BucketName = "my_s3_bucket";
uploadRequest.Key = toPath;
uploadRequest.AddHeader("x-amz-acl", "public-read");
transferUtility.BeginUpload(uploadRequest, callback, null);
}
private void uploadComplete(IAsyncResult result)
{
var x = result;
}
}
这篇关于亚马逊S3上传与公共权限的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文