我正在将文件上传到api,我必须将requestStream复制到FileStream才能将文件发布到API。我的下面的代码工作,但我必须将文件保存到临时文件夹以创建FileStream,然后我必须在操作后再次清理临时文件夹。是否有更清洁的方法 - 例如在内存中创建FileStream(如果可能)而不是将其保存到磁盘?
Stream requestStream = await Request.Content.ReadAsStreamAsync();
//Create filestream by making a temporary physical file
using (FileStream fileStream = System.IO.File.Create(@"C:\tempFolder\" fileName))
{
await requestStream.CopyToAsync(fileStream);
var postedFile = ms.CreateMedia(fileName, folder.Id, "file");
postedFile.SetValue("umbracoFile", fileName, fileStream);
ms.Save(postedFile);
}
// Clean up
if ((System.IO.File.Exists(@"C:\tempFolder\" + fileName)))
{
System.IO.File.Delete(@"C:\tempFolder\" + fileName);
}
答案 0 :(得分:0)
为什么不直接使用requestStream
?它是Stream
的一个实例,您的API端点需要Stream
的实例,除非您想添加不必要的开销,否则无需将requestStream
的内容复制到任何中间点
Stream requestStream = await Request.Content.ReadAsStreamAsync();
var postedFile = ms.CreateMedia(fileName, folder.Id, "file");
postedFile.SetValue("umbracoFile", fileName, requestStream);
ms.Save(postedFile);
答案 1 :(得分:0)
.Net并未真正提供良好的内存解决方案。最好自己创建一个以节省资源并封装更多功能。
查看本指南here