如何使用适用于 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/