简体   繁体   中英

.NET Core Image not stored in s3 bucket

My function is executing successfully, but image is not storing in the s3 bucket. I need your help to understand where I am doing wrong

public IActionResult load([FromForm(Name = "file")] IFormFile file)
{
    var credentials = new EnvironmentVariablesAWSCredentials();
    var client = new AmazonS3Client(credentials, RegionEndpoint.USEast1);

    PutObjectRequest request = new PutObjectRequest
    {
        BucketName = "#######",
        Key = file.FileName,
        InputStream = file.OpenReadStream(),
        ContentType = file.ContentType
    };

    var result = client.PutObjectAsync(request);
    return Ok(result);
}

Try this exact .NET Code:

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace UploadObject
{
    // The following example shows two different methods for uploading data to
    // an Amazon Simple Storage Service (Amazon S3) bucket. The method,
    // UploadObjectFromFileAsync, uploads an existing file to an Amazon S3
    // bucket. The method, UploadObjectFromContentAsync, creates a new
    // file containing the text supplied to the method. The application
    // was created using AWS SDK for .NET 3.5 and .NET 5.0.

    class UploadObject
    {
        private static IAmazonS3 _s3Client;

        private const string BUCKET_NAME = "doc-example-bucket";
        private const string OBJECT_NAME1 = "objectname1.txt";
        private const string OBJECT_NAME2 = "objectname2.txt";

        private static string LOCAL_PATH = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

        static async Task Main()
        {
            _s3Client = new AmazonS3Client();

            // The method expects the full path, including the file name.
            var path = $"{LOCAL_PATH}\\{OBJECT_NAME1}";

            await UploadObjectFromFileAsync(_s3Client, BUCKET_NAME, OBJECT_NAME1, path);
            await UploadObjectFromContentAsync(_s3Client, BUCKET_NAME, OBJECT_NAME2, "This is a test...");
        }

        /// <summary>
        /// This method uploads a file to an Amazon S3 bucket. This
        /// example method also adds metadata for the uploaded file.
        /// </summary>
        /// <param name="client">An initialized Amazon S3 client object.</param>
        /// <param name="bucketName">The name of the S3 bucket to upload the
        /// file to.</param>
        /// <param name="objectName">The destination file name.</param>
        /// <param name="filePath">The full path, including file name, to the
        /// file to upload. This doesn't necessarily have to be the same as the
        /// name of the destination file.</param>
        private static async Task UploadObjectFromFileAsync(
            IAmazonS3 client,
            string bucketName,
            string objectName,
            string filePath)
        {
            try
            {
                var putRequest = new PutObjectRequest
                {
                    BucketName = bucketName,
                    Key = objectName,
                    FilePath = filePath,
                    ContentType = "text/plain"
                };

                putRequest.Metadata.Add("x-amz-meta-title", "someTitle");

                PutObjectResponse response = await client.PutObjectAsync(putRequest);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine($"Error: {e.Message}");
            }
        }

        /// <summary>
        /// This method creates a file in an Amazon S3 bucket that contains the text
        /// passed to the method.
        /// </summary>
        /// <param name="client">An initialized S3 client object.</param>
        /// <param name="bucketName">The name of the bucket where the file will
        /// be created.</param>
        /// <param name="objectName">The name of the file that will be created.</param>
        /// <param name="content">A string containing the content to put in the
        /// file on the destination S3 bucket.</param>
        private static async Task UploadObjectFromContentAsync(IAmazonS3 client,
            string bucketName,
            string objectName,
            string content)
        {
            var putRequest = new PutObjectRequest
            {
                BucketName = bucketName,
                Key = objectName,
                ContentBody = content
            };

            PutObjectResponse response = await client.PutObjectAsync(putRequest);
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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