【问题标题】:ASP.NET MVC - Uploading an image to Amazon S3ASP.NET MVC - 将图像上传到 Amazon S3
【发布时间】:2011-04-16 10:43:13
【问题描述】:

我的图片来自 Request.Files[0]。现在,如何将此图像上传到 S3?我看到在 AWS .NET API 中放置一个字符串对象时必须指定 ContentBody。如何获取文件的内容正文?

【问题讨论】:

    标签: c# asp.net asp.net-mvc-2 amazon-s3 asp.net-4.0


    【解决方案1】:

    这很可能是一个 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 作为 PutObjectRequest 对象的 InputStream 属性。感谢您的帮助!
    【解决方案2】:
    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);
    

    【讨论】:

      【解决方案3】:

      关于如何使用文件夹和授予所有用户只读访问权限的详细信息。 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

      【讨论】:

      • 博文是死链接。
      【解决方案4】:
                      PurObjectRequest request = new PutObjectRequest()
                      {
                          BucketName = _bucketName,
                          CannedACL = S3CannedACL.PublicRead,
                          Key =  string.Format("folderyouwanttoplacethefile/{0}", file.FileName),
                          InputStream = file.InputStream
                      };
      
                      YourS3client.PutObject(request);
      

      【讨论】:

        猜你喜欢
        • 2011-11-10
        • 2014-06-26
        • 2017-04-28
        • 2013-09-09
        • 2014-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多