-AWS C# .Net Core- 如何将 .jpg 图像上传到 S3 存储桶而不将其另存为文件

我正在使用 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?


慕的地10843
浏览 116回答 1
1回答

幕布斯6054654

FilePath您可以InputStream在 上使用 ,而不是使用PutObjectRequest。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);}
打开App,查看更多内容
随时随地看视频慕课网APP