2011-09-19 35 views
0

在我的asp.net應用程序 我使用從數據庫(「產品」實體)派生的實體。 實體之間的各個領域需要3個圖像字段。在服務器端保存文件 - 最佳實踐

我使用FileUpload加載各種圖像文件,我想添加實體到上下文(實體框架)後iv'e添加3個圖像。

context.AddToProduct(Product);  

我不知道會是什麼submition之前保存這些文件的最佳實踐

我有3個字節[]數組需要被保存爲特定的產品被上載到網站 。

我想在服務器端用產品名稱 及更高版本創建一個目錄,當提交所有產品的憑證時,將它們與圖像一起放入產品實體並將其保存在實體模型中。

我正在尋找更多的asp.net有點方法來緩存它們,並在需要時檢索它們。

任何想法。

這裏是用於加載的產品

  byte[] imageSize = new byte[FileUpload1.PostedFile.ContentLength]; 
      HttpPostedFile uploadedImage = FileUpload1.PostedFile; 
      uploadedImage.InputStream.Read(imageSize,0,(int)FileUpload1.PostedFile.ContentLength); 
      MyProduct product = new MyProduct() 
      { 
       Image = imageSize, 
       Date = DateTime.Now, 
       State = 1, 
       Short = "short discription", 
       Long = "long.......................", 
       Title = "Some Title", 
       Price = (float)11.1, 
       OwnerID = int.Parse(Response.Cookies["user"]["id"]),       
      };  

進一步的單個圖像的示例, 如果我保存會話[「file1的」]會話[「文件2」]會話[「file3的」],但如果用戶嘗試爲那些文件加載​​圖片,這可能會導致性能問題。

回答

1

如果保存在會話中,則只有觸發圖片保存的用戶才能訪問該會話。由於會話不同,所有其他用戶的Session [「file1」]值將不同(或爲空)。

我用這樣做的方式是將圖像保存到數據庫中。我喜歡這種方法,因爲這樣就沒有「外部依賴」,即可能被破壞的路徑。

將圖像保存到會話中將只允許您緩存一個用戶。將其保存到服務器變量中,將允許任何人檢索它(只需小心不要使圖像過載RAM)