文件上传:无法将值分配到文件中,不断弹出null给我?需要帮助,任何亲?

时间:2014-09-29 03:16:27

标签: c# asp.net-mvc file implicit-conversion httppostedfilebase

我在asp mvc上进行上传,它首先用户尝试将文件附加到模型中,文件是system.web.httpfilewrapper。

但是当涉及到第二次尝试控制器从其他文本框中捕获无效金额,并且它回发给用户说无效,此后用户输入有效金额,然后它返回到控制器,此处此处开始让我不知道发生了什么,文件突然变成了null,它无法完成将值发布到模型中的以下代码行。

if (model.File != null && model.File.ContentLength > 0)
{
    Byte[] destination = new Byte[model.File.ContentLength];
    model.File.InputStream.Position = 0;
    model.File.InputStream.Read(destination, 0, model.File.ContentLength);
    model.BankSlip = destination;
}

毕竟我决定使用另一种方法来完成它,因为model.file是= null,所以我在第一个块添加了一些代码,让文件保存到App_Data中以获取临时并稍后检索上...

if (model.File != null && model.File.ContentLength > 0)
{
    Byte[] destination2 = new Byte[model.File.ContentLength];
    model.File.InputStream.Position = 0;
    model.File.InputStream.Read(destination2, 0, model.File.ContentLength);
    model.BankSlip = destination2;
    string chg = model.File.ToString();
    string file = Path.GetFileName(chg);
    string NewName = chg.Replace(file, member.MemberCode+".jpg");
    var fileName = Path.GetFileName(NewName);
    var savepath = Path.Combine(Server.MapPath("~/App_Data"), fileName);
    model.File.SaveAs(savepath);

}

它完美地工作到这一点,但问题在else块中启动,我使用文件流来回读文件并尝试将其找回模型,一切正常外,文件仍为= Null。这是我要问的愚蠢问题,我不知道如何将系统io分配或转换为httppostedfilebase,它不断向我显示一个注释掉的错误,任何专业人士可以帮助我愚蠢的想法吗?我知道要解决这个问题,我实际上可以使用会话,但由于某些原因,我不想使用它,而是我用更长的方式来做,如果有人能解决这个问题,我将不胜感激。 / p>

else
{
       FileStream fileStream = new FileStream(Path.Combine(Server.MapPath("~/App_Data"), member.MemberCode + ".jpg"), FileMode.Open, FileAccess.Read);
       int read = (int)fileStream.Length;
      // HttpPostedFileBase colbase = new HttpPostedFileWrapper();
       //model.File = colbase;
       Byte[] destination = new Byte[read];
       fileStream.Position = 0;
       fileStream.Read(destination, 0, read);
       model.BankSlip = destination;
}

1 个答案:

答案 0 :(得分:1)

由于httppostedfilebase只接受来自视图本身的值,它不会工作,否则它会从物理文件中获取任何内容。 :)

仍然欢迎您回答这个问题。因为我发现这是httppostedfilebase的限制。