我正在重构我的应用程序的一部分,以便在位字段中将文件保存到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();
}
答案 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();
}