LINQ文件上传故障w EF

时间:2016-06-30 16:42:30

标签: c# asp.net-mvc entity-framework linq

我正在重构我的应用程序的一部分,以便在位字段中将文件保存到Db。在其他地方我使用了SqlCommand方法,但在这里我想要锁定我现有的EF程序,原因很多,原因并不明显。上传器工作正常,但它到达LINQ时会崩溃。当我查询Db时,而不是通常的" 0x25504462D ..."在比特字段中,我得到简单的" 0x"。试图查看该文件会收到一条消息"文件为空"。我接近了吗?其他字段插入完美,插入过程中没有错误。我如何"饲料"文件到fileUpload?请指教。

HttpPostedFileBase file = Request.Files[inputTagName];
FileUpload fileUpload = new FileUpload(); 

using (DBEntities ode = new DBEntities())
{
    (check if file exists...)
    else
    {  
        MyModels.File newfile = new MyModels.File();
        newfile.ID = Guid.NewGuid();
        newfile.Name = fn;
        newfile.VirtualPath = filePath;
        newfile.DateTimeUploaded = DateTime.Now;
        newfile.binFile = fileUpload.FileBytes;
        ode.AddToFiles(newfile);
    }
    ode.SaveChanges();
}

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以尝试获取上传文件的`byte []'值。

HttpPostedFileBase file = Request.Files[inputTagName];
var uploadedFile = new byte[file.InputStream.Length];

using (DBEntities ode = new DBEntities())
{
    (check if file exists...)

    else
    {  
            MyModels.File newfile = new MyModels.File();
            newfile.ID = Guid.NewGuid();
            newfile.Name = fn;
            newfile.VirtualPath = filePath;
            newfile.DateTimeUploaded = DateTime.Now;
            newfile.binFile = uploadedFile;
            ode.AddToFiles(newfile);
    }

    ode.SaveChanges();
}

答案 1 :(得分:0)

经过多次感叹和咬牙切齿(以及来自@denchu的鼓励)显然我需要阅读数据:

HttpPostedFileBase file = Request.Files[inputTagName];
 //var uploadedFile = new byte[file.InputStream.Length];
 BinaryReader br = new BinaryReader(file.InputStream);
 byte[] uploadedFile = br.ReadBytes(file.ContentLength);

   using (DBEntities ode = new DBEntities())
   {
      (check if file exists...)

   else
   {  
        MyModels.File newfile = new MyModels.File();
        newfile.ID = Guid.NewGuid();
        newfile.Name = fn;
        newfile.VirtualPath = filePath;
        newfile.DateTimeUploaded = DateTime.Now;
        newfile.binFile = uploadedFile;
        ode.AddToFiles(newfile);
  }

   ode.SaveChanges();
}