Aar*_*ten 0 c# asp.net linq-to-sql asp.net-mvc-3
我正在尝试将文件存储在SQL Server数据库中,并使用ASP.NET MVC 3和C#中的LINQ to SQL.当我尝试将列的数据类型设置为byte []时,它表示这是一种无效的数据类型.使用vrabinary(MAX)数据类型似乎是合乎逻辑的事情.
目标是将PDF文件存储在用户选择使用HTTP文件上载器上载的数据库中.在分配LINQ成员变量期间发生错误,该变量引用要存储文件的列.
错误3无法将类型'System.Web.HttpPostedFileBase'隐式转换为'System.Data.Linq.Binary'C:\ Users\Aaron Patten\Documents\Visual Studio 2010\Projects\MyApp\MyApp\Controllers\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);
}
Run Code Online (Sandbox Code Playgroud)
这一切的正确方法是什么?
PS:如何将PDF显示为嵌入对象而不将其保存到服务器?
DAP
错误消息告诉您错误...您正在设置Content = hpf.hpf是一个HttpPostedFileBase,所以它首先需要转换为byte [].通过从hpf的流中读取byte []来做到这一点.
myPDFFile.Content = new BinaryReader(hpf.InputStream).ReadBytes(hpf.InputStream.Length)