0

他のすべてのフィールド情報が保存されているのに、フィールド (DocumentDepartment) 値の 1 つが null を返すというファイルのアップロードに問題があります。

助けてください

私のモデルには次のコードがあります。

public class Document
{
    public int DocumentID { get; set; }
    public string DocumentName { get; set; }
    public string DocumentDepartment { get; set; }
    public byte[] DocumentType { get; set; }
}

私のコントローラーのコード:

[HttpPost]
public ActionResult Create(HttpPostedFileBase document)
{
    // verify user selected a file
    if (document != null && document.ContentLength > 0)
    {
        //Get file information
        var documentName = Path.GetFileName(document.FileName);
        var contentLength = document.ContentLength;
        var contenttype = document.ContentType;
        var datadept = DocumentDepartment;

        //Get the file data
        byte[] data = new byte[] { };
        using (var binaryReader = new BinaryReader(document.InputStream))
        {
            data = binaryReader.ReadBytes(document.ContentLength);
        }

        //Save to the database
        Document doc = new Document();
        doc.DocumentDepartment = datadept;
        doc.DocumentName = documentName;
        doc.DocumentType = data;

        //show success....
        db.Document.Add(doc);
        db.SaveChanges();
        ViewData["message"] = document.FileName + "has been saved.";

        return RedirectToAction("Index");

    }
    return View(document);
}
4

1 に答える 1

0

OK、あなたは MVC と HTML フォームの仕組みを理解していないと思います。HttpPostedFile を受け取った場合、それは受け取ったバイナリ データの単なるラッパーです。ファイルをバイト ストリームから、最初に作成した型付きオブジェクトに逆シリアル化する必要があります。

オブジェクトのシリアライゼーション/デシリアライゼーション機能はありますか?

ここで、型付きオブジェクトをストリームに読み書きすることを検討しない場合:

http://msdn.microsoft.com/en-us/library/vstudio/ms233843.aspx

于 2013-08-21T12:12:36.700 に答える