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.