2011-10-12 32 views
0

我試圖在SQL Server數據庫中存儲文件,並且在C#中使用ASP.NET MVC 3和LINQ to SQL。當我嘗試將列的數據類型設置爲byte []時,它表示這是無效的數據類型。使用vrabinary(MAX)數據類型似乎是合乎邏輯的事情。LINQ不提供用於存儲文件的byte []數據類型

目標是將PDF文件存儲在用戶選擇使用HTTP文件上傳器上傳的數據庫中。在指定要存儲文件的列的LINQ成員變量的賦值期間發生該錯誤。

錯誤3無法隱式轉換類型 'System.Web.HttpPostedFileBase' 到 'System.Data.Linq.Binary' C:\用戶\亞倫彭定康\文檔\ Visual Studio 2010的\項目\ MyApp的\ MyApp的\控制器\ MyController.cs 66 31 MyApp

我還沒找到太多遇到這個問題的其他人的方式,所以我認爲必須有一些我遺失的東西,對於任何人來說都是過於基本的。

我的控制器:

public ActionResult UploadPDF() 
    { 
     List<ViewDataUploadFilesResult> r = new List<ViewDataUploadFilesResult>(); 

     HttpPostedFileBase hpf;// = Request.Files[file] as HttpPostedFileBase; 

     foreach (string file in Request.Files) 
     { 
      hpf = Request.Files[file] as HttpPostedFileBase; 
      if (hpf.ContentLength == 0) 
       continue; 
      string savedFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "images\\" + Path.GetFileName(hpf.FileName)); 
      hpf.SaveAs(savedFileName); 

      r.Add(new ViewDataUploadFilesResult() 
      { 
       Name = savedFileName, 
       Length = hpf.ContentLength 
      }); 
     } 

     MyApp.Models.MyAppDataContext db = new MyApp.Models.MyAppDataContext(); 

     MyApp.Models.PDFFile myPDFFile = new MyApp.Models.PDFFile(); 

     myPDFFile.Content = hpf; 
     db.questions.InsertOnSubmit(myPDFFile); 
     db.SubmitChanges(); 

     return View("UploadPDF", r); 
    } 

什麼的去了解這一切的正確方法?

P.S .:如何將PDF作爲嵌入對象顯示而不保存到服務器?

D.A.P.

回答

6

錯誤消息告訴你什麼是錯的...你要設置的內容= HPF。 hpf是一個HttpPostedFileBase,因此它首先需要轉換爲一個byte []。通過從hpf流中讀取字節[]來實現這一點。

myPDFFile.Content = new BinaryReader(hpf.InputStream).ReadBytes(hpf.InputStream.Length)

0

在您的LINQ to SQL實體設計器中,將字段從System.Data.Linq.Binary更改爲System.Byte[]。提交後隱含轉換。

enter image description here

+0

設計師沒有該選項。 –

相關問題