我需要保留已发布文件的数据,因为如果POST上的验证错误,并且页面重新加载,则用户不需要再次发布文件,因为可能有很多文件。但是如何将System.Byte []转换为html输入中的已发布文件?
实际上我在我的Controller.cs中这样做:
var binaryReader = new BinaryReader(
HttpContext.Current.Request.Files["INPUT_NAME"].InputStream))
将我的HttpPostedFileBase转换为BinaryReader后,我在我的ViewModel属性(campo.ByteArray)上设置了值,如名称所示,其Byte []类型:
campo.ByteArray =
binaryReader.ReadBytes(
HttpContext.Current.Request.Files["INPUT_NAME"].ContentLength);
然后将其发送到我的View.cshtml,并尝试将此值设置为输入[type = file],如下所示:
<input type="file" name="INPUT_NAME" id="INPUT_NAME" value="@Model.ByteArray"/>
将我的@ Model.ByteArray视为使用HttpPostedFileBase在控制器上创建的byteArray。
但是在页面准备好后,我的输入[type = file]仍为空,显示消息“未选择文件”。
有没有办法让它变得可能?
提前致谢!
答案 0 :(得分:0)
正如上面@Stephen Muecke所解释的那样,出于安全考虑,我不允许这样做:
- 出于安全原因,您无法设置文件输入的值。它只能由用户在浏览器中选择文件来设置 - 如果因为ModelState无效而需要返回视图,请暂时保存文件,并返回其文件名,以便用户可以查看已上载的内容。这个插件可能是有意义的
谢谢大家!