C# 从文件异常获取内存流
我上传了一个图像,并希望将其发送到第三方服务(Cloudinary),而无需将文件保存在我的服务器中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
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?
我删除了内存流
部分,它可以工作,我不知道,谢谢。