ASP.NET MVC - 将图像上传到Amazon S3
我从Request.Files [0]获得了我的图像。现在,我该如何将这张图片上传到S3?我在AWS .NET API中看到,在放置一个字符串对象时,您必须指定ContentBody。我将如何获取我的文件的内容正文?ASP.NET MVC - 将图像上传到Amazon S3
var file = Request.Files[0];
PutObjectRequest request = new PutObjectRequest();
request.BucketName = "mybucket"
request.ContentType = contentType;
request.Key = key;
request.InputStream = file.InputStream;
s3Client.PutObject(request);
很可能这是一个Base64编码的字符串,但您应该检查S3文档以确保它。如果是,则应使用Convert.ToBase64String()并将字节数组传递给它。
下面是一些您可以尝试的示例代码。我没有测试它,但它应该可以帮助您正确的观念:
if (Request.Files.Count >= 1) {
var file = Request.Files[0];
var fileContents = new byte[file.ContentLength];
file.InputStream.Read(fileContents, 0, file.ContentLength);
var fileBase64String = Convert.ToBase64String(fileContents);
// now you can send fileBase64String to the S3 uploader
}
这并不工作,但没有什么工作是使用file.InputStream作为的InputStream的属性PutObjectRequest对象。谢谢你的帮助! – 2010-09-23 19:50:25
与如何使用文件夹和授予所有用户进行只读访问稍微更多的细节。 HTML:
C#
HttpPostedFileBase file = Request.Files[0];
if (file.ContentLength > 0) // accept the file
{
string accessKey = "XXXXXXXXXXX";
string secretKey = "122334XXXXXXXXXX";
AmazonS3 client;
using (client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey))
{
MemoryStream ms = new MemoryStream();
PutObjectRequest request = new PutObjectRequest();
request.WithBucketName("mybucket")
.WithCannedACL(S3CannedACL.PublicRead)
.WithKey("testfolder/test.jpg").InputStream = file.InputStream;
S3Response response = client.PutObject(request);
}
更多详细信息,请访问:http://bradoyler.com/post/3614362044/uploading-an-image-with-aws-sdk-for-net-c
博客文章是无效链接。 – swbradshaw 2017-11-29 20:07:36
PurObjectRequest request = new PutObjectRequest()
{
BucketName = _bucketName,
CannedACL = S3CannedACL.PublicRead,
Key = string.Format("folderyouwanttoplacethefile/{0}", file.FileName),
InputStream = file.InputStream
};
YourS3client.PutObject(request);
请添加一些关于它如何工作的解释。 – 2016-10-03 20:18:17
感谢代码位,也为我解决了一些问题。 – Chaddeus 2010-11-08 04:27:48