使用Entity Framework将上传的文档存储在数据库中(通过MVC)

时间:2010-11-10 20:31:46

标签: asp.net-mvc entity-framework file-upload

有没有人有一个如何使用实体框架在SQL Server 2008数据库中存储上传文档(无论是Word还是PDF,。)的示例?

我想我已经找到了文件上传部分(见下面的代码),尽管我愿意接受建设性的评论。

我曾经在较旧的数据库中进行大量文档存储,并且由于SQL Server 2008有新的数据类型,有人可以建议我应该为我上传的文档使用哪些文档(它仍然是Image)吗?

此外,正如您从我的代码中看到的那样,如果我将上传的文档作为字节数组(或者请另行建议),我该如何将其传递给我的实体?

这是我到目前为止所拥有的:

[HttpPost]
public ActionResult Create(HttpPostedFileBase fileUpload)
{
    if (fileUpload == null) return View();

    if (fileUpload.ContentLength == 0) return View();

    // not sure whether this is useful or the method below this
    var reader = new StreamReader(fileUpload.InputStream);

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

        hpf.SaveAs(savedFileName);

        var curFile = System.IO.File.Open(file, FileMode.Open);
        var fileLength = curFile.Length;

        var tempFile = new byte[fileLength];
        curFile.Read(tempFile, 0, Convert.ToInt32(fileLength));

        var jobFile = new JobFile
                              {
                                  UploadDate = DateTime.Now,
                                  UploadedBy = User.Identity.Name,
                                  FileName = savedFileName,
                                  ContentType = hpf.ContentType
                              };
        jobFile.FileData = 

        _jobFileRepository.Save();
    }
    return RedirectToAction("Index");
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

假设您将FileData作为二进制类型。

jobFile.FileData = tempFile.ToArray();