簡體   English   中英

在內存中創建FileStream而不是在磁盤上保存物理文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM