asp.net - 使用 ASP.NET SDK 将文件上传到 S3 存储桶文件夹

标签 asp.net sdk amazon-s3

如何使用适用于 ASP.NET 的 AWS 开发工具包将文件上传到特定文件夹? - 我能够通过指定存储桶名称 (request.WithBucketName) 来上传文件,但我希望能够将文件上传到存储桶本身内的特定文件夹。

这是我用来将文件上传到单个存储桶的代码:

public bool UploadFileToS3(string uploadAsFileName, Stream ImageStream, S3CannedACL filePermission, S3StorageClass storageType, string toWhichBucketName)
{

    try
    {
        client = Amazon.AWSClientFactory.CreateAmazonS3Client(MY_AWS_ACCESS_KEY_ID, MY_AWS_SECRET_KEY);
        PutObjectRequest request = new PutObjectRequest();
        request.WithKey(uploadAsFileName);
        request.WithInputStream(ImageStream);
        request.WithBucketName(toWhichBucketName);
        request.CannedACL = filePermission;
        request.StorageClass = storageType;

        client.PutObject(request);
        client.Dispose();
    }
    catch
    {            
        return false;
    }
    return true;

}

希望这段代码能帮到你。

最佳答案

要将文件添加到存储桶中的文件夹,您需要更新 PutObjectRequest 的 Key 以将文件夹包含在文件名之前。

public bool UploadFileToS3(string uploadAsFileName, Stream ImageStream, S3CannedACL filePermission, S3StorageClass storageType, string toWhichBucketName)
{
    try
    {
        using(client = Amazon.AWSClientFactory.CreateAmazonS3Client(MY_AWS_ACCESS_KEY_ID, MY_AWS_SECRET_KEY))
        {
           PutObjectRequest request = new PutObjectRequest();
           request.WithKey( "folder" + "/" + uploadAsFileName );
           request.WithInputStream(ImageStream);
           request.WithBucketName(toWhichBucketName);
           request.CannedACL = filePermission;
           request.StorageClass = storageType;

           client.PutObject(request);
        }
    }
    catch
    {            
        return false;
    }
    return true;
}

This post谈到将文件上传到文件夹。他们虽然使用 TransferUtilityUploadRequest,但它应该与 PutObjectRequest 一起使用。滚动到相关示例的底部。

This post展示了如何在不上传文件的情况下创建文件夹。

希望这有帮助

编辑:
更新了代码以使用 using 块,而不是根据最佳实践调用 Dispose。

关于asp.net - 使用 ASP.NET SDK 将文件上传到 S3 存储桶文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7039771/

相关文章:

asp.net - IE10的ASP.Net更改浏览器模式

c# - 无法加载文件或程序集 'EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

c# - 在 C# 的列表中循环遍历列表

ios - Quickblox:如何识别 QBActionStatusDelegate 中哪个推送通知发送失败

c# - 当前上下文中不存在变量 C#

iOS - 无法让 SMS XMLDocument 工作

amazon-web-services - 缓存亚马逊ec2元属性是否安全

amazon-web-services - AWS Amplify CLI 创建无法访问的存储桶进行托管

amazon-web-services - 如何使用 AWS IAM 角色运行 StarCluster

php - 如何用 Amazon S3 替换 PHP imagecopyresampled?