繁体   English   中英

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

[英]Upload a file to S3 bucket's folder using ASP.NET SDK

如何使用 AWS SDK for ASP.NET 将文件上传到特定文件夹? - 我可以通过指定存储桶名称 (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;
}

这篇文章讨论了将文件上传到文件夹。 虽然他们正在使用 TransferUtilityUploadRequest,但它应该与 PutObjectRequest 一起使用。 滚动到底部以查看相关示例。

这篇文章展示了如何在不上传文件的情况下创建文件夹。

希望这会有所帮助

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

看起来像以下功能

1.创建一个AmazonS3 object

2.创建一个桶

3.向Amazon S3添加一个新文件

4.从 Amazon S3 获取文件

5.从 Amazon S3 中删除文件

亚马逊

超级简单的方法:

using System;
using System.Web;
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System.Configuration;

/// <summary>
/// Summary description for AWShandler
/// </summary>
public static class AWSHandler
{
    public static void sendFileToS3(string fileName, string storeLocation)
    {
        try
        {
            AmazonS3Client client = new AmazonS3Client(RegionEndpoint.EUWest1);
            PutObjectRequest request = new PutObjectRequest();
            request.BucketName = ConfigurationManager.AppSettings["AWSBucket"].ToString();
            request.FilePath = fileName;
            request.Key = storeLocation + fileName;
            request.ContentType = MimeMapping.GetMimeMapping(fileName);
            PutObjectResponse response = client.PutObject(request);
        }
        catch (Exception ex)
        {
            // use a logger and handle it
        }
    }
}

您只需将密钥放在 web/app.config 文件中:

<add key="AWSAccessKey" Value="yourKey" />
<add key="AWSSecretKey" Value="yourSecret" />

这些可以从 AWS 控制台中的您的帐户页面获得。 它们也必须使用此处引用的名称,因为它们是由 AWS 库预定义的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM