2016-04-21 58 views
0

我在ASP.Net MVC中實現了文件上傳。我創建了一個視圖模型,將上傳的文件作爲HttpPostedFileWrapper接收,並在控制器操作中將文件保存到磁盤。將HttpUploadedFileWrapper轉換爲不在System.Web中的東西

但是,我想執行實際的保存在服務方法,它是在類庫中沒有實現System.Web。因此我不能將HttpPostedFileWrapper對象傳遞給服務方法。

有沒有人知道如何實現這一點,無論是通過接收文件作爲一個不同的對象,或在通過它之前將其轉換爲其他對象。我能想到的唯一方法是將文件的內容讀入MemoryStream,並將其與其他參數(如文件名)一起單獨傳遞,但只是想知道是否有更好的方法?

感謝

回答

1

最好的辦法可能會被檢索的圖像數據(作爲byte[])和圖像的名稱(如一個string),並通過沿爲您服務,類似你提到的做法的:

public void UploadFile(HttpPostedFileWrapper file) 
{ 
     // Ensure a file is present 
     if(file != null) 
     { 
      // Store the file data 
      byte[] data = null; 
      // Read the file data into an array 
      using (var reader = new BinaryReader(file.InputStream)) 
      { 
       data = reader.ReadBytes(file.ContentLength); 
      } 
      // Call your service here, passing along the data and file name 
      UploadFileViaService(file.FileName, data); 
     } 
} 

由於byte[]string是非常基本的primatives,你應該將它們傳遞到另一個服務沒有問題。 A Stream很可能也會起作用,但它們可能很容易出現問題,例如被關閉,而byte[]已經包含了您的所有內容。

+0

很好,非常感謝! – Kate

相關問題