【问题标题】:-AWS C# .Net Core- How to upload a .jpg image to S3 bucket without saving it as a file-AWS C# .Net Core-如何将 .jpg 图像上传到 S3 存储桶而不将其保存为文件
【发布时间】:2019-11-10 18:38:10
【问题描述】:

我正在使用 AWS Lambda C# .Net 核心

我正在尝试上传 .jpg 文件而不将其保存到本地计算机(在已部署的 Lambda 函数中不允许)

我以十六进制字符串形式获取文件,可以将其重新编码为二进制,将其保存为文件,甚至可以正常从本地调试上传。

int len = image.ImagePayload.Length;
byte[] bin = new byte[len / 2];
for (int i = 0; i < len; i += 2)
{
    bin[i / 2] = Convert.ToByte(image.ImagePayload.Substring(i, 2), 16);
}

File.WriteAllBytes(image.ImageName, bin);

PutObjectRequest putObj = new PutObjectRequest
{
    BucketName = input.Bucket,
    FilePath = image.ImageName,
    ContentType = "image/jpg",
    Key = image.ImageName
};
PutObjectResponse putResp = S3Client.PutObjectAsync(putObj).Result;

完全部署后,AWS Lambda 因“只读文件系统”而失败

有什么方法可以在不将数据保存到文件的情况下上传到 S3?

【问题讨论】:

    标签: c# amazon-s3 aws-lambda image-uploading


    【解决方案1】:

    您可以在PutObjectRequest 上使用InputStream,而不是使用FilePath

    byte bin = ...
    
    using (var stream = new MemoryStream(bin))
    {
        var request = new PutObjectRequest
        {
            BucketName = input.Bucket,
            InputStream = stream,
            ContentType = "image/jpg",
            Key = image.ImageName
        }
    
        var response = await S3Client.PutObjectAsync(request).ConfigureAwait(false);
    }
    

    参考:https://docs.aws.amazon.com/sdkfornet1/latest/apidocs/html/T_Amazon_S3_Model_PutObjectRequest.htm

    【讨论】:

      猜你喜欢
      • 2018-04-25
      • 2021-02-27
      • 2019-08-17
      • 2019-04-15
      • 2017-12-23
      • 2018-03-11
      • 1970-01-01
      • 2021-02-07
      • 2019-03-18
      相关资源
      最近更新 更多