C# 从文件异常获取内存流

C# 从文件异常获取内存流,c#,asp.net-core,memorystream,cloudinary,C#,Asp.net Core,Memorystream,Cloudinary,我上传了一个图像,并希望将其发送到第三方服务(Cloudinary),而无需将文件保存在我的服务器中 public async Task<List<string>> GetImagesUrlsByImage(IFormFile image) { List<string> urlList = new List<string>(); ImageUploadParams uploadParams = new ImageUploadPara

我上传了一个图像,并希望将其发送到第三方服务(Cloudinary),而无需将文件保存在我的服务器中

public async Task<List<string>> GetImagesUrlsByImage(IFormFile image)
{
    List<string> urlList = new List<string>();
    ImageUploadParams uploadParams = new ImageUploadParams();

    using (var memoryStream = new MemoryStream())
    {
        await image.CopyToAsync(memoryStream);
        uploadParams.File = new FileDescription(image.FileName, memoryStream);
        uploadParams.EagerTransforms = new List<Transformation>
        {
            new EagerTransformation().Width(200).Height(150).Crop("scale"),
            new EagerTransformation().Width(500).Height(200).Crop("scale")
        };

        ImageUploadResult result = await _cloudinary.UploadAsync(uploadParams);
        var url = result.SecureUrl.ToString();
        urlList.Add(url);
    }

    return urlList;
}
公共异步任务GetImagesUrlsByImage(IFormFile image)
{
List urlList=新列表();
ImageUploadParams uploadParams=新ImageUploadParams();
使用(var memoryStream=new memoryStream())
{
等待映像。复制到同步(memoryStream);
uploadParams.File=新文件描述(image.FileName,memoryStream);
uploadParams.com=新列表
{
新转换().宽度(200).高度(150).裁剪(“比例”),
新转换().宽度(500).高度(200).裁剪(“比例”)
};
ImageUploadResult=await\u cloudinary.UploadAsync(uploadParams);
var url=result.SecureUrl.ToString();
添加(url);
}
返回URL列表;
}
我没有收到异常,但Cloudinary的结果消息有一条错误消息:“无图像”

调试时,我看到以下错误:


我需要在这段代码中修复什么?

最有可能的情况是,假设其他一切正常,您只需重置
内存流中光标的位置即可:

ms.位置=0;
下面是一个完整的例子:

公共异步任务GetImagesUrlsByImage(IFormFile image)
{
List urlList=新列表();
ImageUploadParams uploadParams=新ImageUploadParams();
使用(var memoryStream=new memoryStream())
{
等待映像。复制到同步(memoryStream);
ms.Position=0;//将光标设置为流的开头。
uploadParams.File=新文件描述(image.FileName,memoryStream);
uploadParams.com=新列表
{
新转换().宽度(200).高度(150).裁剪(“比例”),
新转换().宽度(500).高度(200).裁剪(“比例”)
};
ImageUploadResult=await\u cloudinary.UploadAsync(uploadParams);
var url=result.SecureUrl.ToString();
添加(url);
}
返回URL列表;
}

“不在我的服务器中保存文件”-但表单文件已保存在您的服务器上的临时目录中。
图像
的流已经指向了一个文件流。既然
格式文件
已经允许您访问流,为什么还要使用
内存流
呢?@mjwills通过使用
OpenReadStream?
我删除了
内存流
部分,它可以工作,我不知道,谢谢。