Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
-AWS C#.Net核心-如何将.jpg图像上载到S3存储桶而不将其保存为文件_C#_Amazon S3_Aws Lambda_Image Uploading - Fatal编程技术网

-AWS C#.Net核心-如何将.jpg图像上载到S3存储桶而不将其保存为文件

-AWS C#.Net核心-如何将.jpg图像上载到S3存储桶而不将其保存为文件,c#,amazon-s3,aws-lambda,image-uploading,C#,Amazon S3,Aws Lambda,Image Uploading,我使用的是AWS Lambda C#.Net core 我正在尝试上载.jpg文件而不将其保存到本地计算机(在已部署的Lambda函数中不允许) 我以十六进制字符串的形式获取文件,并可以将其重新编码为二进制,将其保存为文件,甚至可以从本地调试中正常上载 int len = image.ImagePayload.Length; byte[] bin = new byte[len / 2]; for (int i = 0; i < len; i += 2) { bin[i / 2] =

我使用的是AWS Lambda C#.Net core

我正在尝试上载.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;
int len=image.ImagePayload.Length;
字节[]bin=新字节[len/2];
对于(int i=0;i
AWS Lambda在完全部署时使用“只读文件系统”失败


是否可以在不将数据保存到文件的情况下上载到S3?

您可以在
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);
}
参考: