c# - .NET Core 映像未存储在 s3 存储桶中
问题描述
我的函数执行成功,但图像未存储在 s3 存储桶中。我需要你的帮助来了解我做错了什么
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);
}
解决方案
试试这个确切的 .NET 代码:
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);
}
}
}
推荐阅读
- regex - 以 > 结尾的网址
- html - 如何通过超链接打开 Chrome 设置页面?
- java - 字符串的 HashSet 和仅检索每个元素的第一个单词
- python - 在图像回归任务中尝试预测均值和标准差时无法获得好的结果
- asp.net - ASP.NET Core Razer 页面未在客户端服务器上发布错误消息
- python - 链表突变
- ms-access - 在主窗体中绑定文本框以在子窗体中查找查询
- asp.net - gridview 中的位置分页问题
- python - Pandas Dataframe 根据现有数据添加列
- yum - 在本地 mrepo 服务器上运行 yum update 时如何解决“403 禁止”错误