亚马逊S3上传与公共权限 [英] Amazon S3 upload with public permissions

查看:252
本文介绍了亚马逊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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆