我是亚马逊S3的新手。
我有一段代码,其中的文件是上传到亚马逊S3在C# (.Net框架)使用令牌和密钥。
现在,我的需求发生了变化,我必须使用PreSigned url来上传相同的图像/文件。我可以生成一个预先签名的网址,但不知道如何使用此Presigned网址上传图像。我试着用谷歌搜索,但找不到实际的解决方案。请看下面这段代码:
/// <summary>
/// Method uploads files to a folder inside the Amazon Bucket
/// </summary>
/// <param name="BucketName">Amazon Bucket</param>
/// <param name="folderName">Name of the folder to be created</param>
/// <param name="fileName">Name of the file to be uploaded inside the folder</param>
/// <param name="fileUrl">Path of the file to be uploaded inside the folder</param>
/// <returns>Returns Amazon file path as BucketName/FolderName only if the file is successfully uploaded to this folder or else returns 1 to indicate that file upload was unsuccessful</returns>
public String CreateNewFileInFolder(String BucketName, String folderName, String fileName, String fileUrl, bool StoreInParentFolder = false, string PreSignurl)
{
try
{
String S3Key = new S3FileInfo(
s3Client,
BucketName,
folderName + "/" + fileName).Exists ? Path.GetFileNameWithoutExtension(fileUrl) + "-" + Guid.NewGuid() + Path.GetExtension(fileUrl) : Path.GetFileName(fileUrl);
PutObjectRequest request = new PutObjectRequest
{
BucketName = BucketName,
Key = folderName + "/" + S3Key,
FilePath = fileUrl,
ContentType = GetContentType(fileName)
};
s3Client.PutObject(request);
}
catch (Exception e)
{
}
}发布于 2021-04-03 17:21:07
我最近也做了同样的事情。您需要使用包含图像文件流的PUT请求调用PreSignedUrl。下面是我的代码。
private static async Task UploadToS3(string filename, string preSignedUrl)
{
await using var fileStream = File.OpenRead(filename);
var fileStreamResponse = await new HttpClient().PutAsync(
new Uri(preSignedUrl),
new StreamContent(fileStream));
fileStreamResponse.EnsureSuccessStatusCode();
}https://stackoverflow.com/questions/62024117
复制相似问题