首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用预签名的url在C#中将图像上传到亚马逊S3

使用预签名的url在C#中将图像上传到亚马逊S3
EN

Stack Overflow用户
提问于 2020-05-26 22:11:36
回答 1查看 582关注 0票数 0

我是亚马逊S3的新手。

我有一段代码,其中的文件是上传到亚马逊S3在C# (.Net框架)使用令牌和密钥。

现在,我的需求发生了变化,我必须使用PreSigned url来上传相同的图像/文件。我可以生成一个预先签名的网址,但不知道如何使用此Presigned网址上传图像。我试着用谷歌搜索,但找不到实际的解决方案。请看下面这段代码:

代码语言:javascript
复制
/// <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)
    {

    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-04-03 17:21:07

我最近也做了同样的事情。您需要使用包含图像文件流的PUT请求调用PreSignedUrl。下面是我的代码。

代码语言:javascript
复制
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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62024117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档