[英]Create FileStream in memory instead of saving a physical file on disk
我正在將文件上傳到api,並且必須將我的requestStream復制到FileStream才能將文件發布到API。 下面的代碼可以工作,但是我必須將文件保存到temp文件夾中以創建FileStream,然后在操作后必須再次清理temp文件夾。 有沒有一種更清潔的方法-例如在內存中創建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);
}
為什么不直接使用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);
.Net並未真正提供良好的內存解決方案。 最好自己創建一個,以節省資源並封裝更多功能。
在這里查看本指南
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.