文件上传:文件赋值失败,一直弹出空给我?需要帮助,任何专业人士

本文关键字:文件 帮助 任何专 赋值 失败 一直 | 更新日期: 2023-09-27 18:24:58

我正在用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,它不断向我显示错误,有专业人士可以帮助我的愚蠢想法吗?我知道要解决这个问题,我实际上可以使用session,但出于某种原因,我不想使用它,相反,我使用更长的方法来完成它,如果有人能解决这个问题我将不胜感激。

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;
}

文件上传:文件赋值失败,一直弹出空给我?需要帮助,任何专业人士

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

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