在我的用户需要将照片添加到我的网站的情况下。因此,他们使用<input type="file" />
,他们会看到一些预览,然后必须转到下一页以确认所有内容。
在他们在确认页面上提交确认表之前,我不想保存上传的照片。这与文件上传输入页面不同。
HTML + Razor
<div class="control-group">
@Html.LabelFor(m => m.SmallLogo, new { @class = "control-label" })
<div class="controls">
@Html.TextBoxFor(m => m.SmallLogo, new { type = "file" })
</div>
</div>
型号
namespace Models.Registration
{
[Serializable]
public class Theme
{
[NonSerialized]
private HttpPostedFileBase _SmallLogo;
[DisplayName("Small Logo: ")]
public HttpPostedFileBase SmallLogo
{
get { return _SmallLogo; }
set { _SmallLogo = value; }
}
}
}
我不确定需要从控制器中发布什么,但是基本上,当页面(窗体)通过HTTP POST提交时,我会更新模型。首先,当使用调试时,我可以将模型悬停,它们将显示为HttpPostedFileWrapper
。然后,我将模型字段类型更改为HttpPostedFileBase
,但是在那之后,我收到了有关无法序列化的错误。
因此,我接着关注了其他一些文章,内容涉及创建可序列化的私有字段,然后获取并设置该值。现在,当我在提交表单后暂停程序时,模式仅显示null。好la脚
如果我遗漏了您需要帮助的信息,请先询问,我会帮您解决!帮我帮你,帮我! :D
答案 0 :(得分:2)
HTTP是无状态的。
这样,如果请求1上传文件,而您希望请求2保存文件-这将很困难。
您应该做的是让请求1将文件保存到位置1(“临时”位置)。然后,请求2可以将文件从位置1移动到位置2(“最终”位置)。然后定期从位置1中删除较旧的项目(例如,一个月前最新更新)