簡體   English   中英

-AWS C#.Net Core-如何將.jpg圖像上傳到S3存儲桶而不將其另存為文件

[英]-AWS C# .Net Core- How to upload a .jpg image to S3 bucket without saving it as a file

我正在使用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而不將數據保存到文件中?

代替使用FilePath ,可以在PutObjectRequest上使用InputStream

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM