将System.Byte []转换为HTML输入类型=“文件”

时间:2018-03-01 20:53:57

标签: c# asp.net-mvc

我需要保留已发布文件的数据,因为如果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]仍为空,显示消息“未选择文件”。

有没有办法让它变得可能?

提前致谢!

1 个答案:

答案 0 :(得分:0)

正如上面@Stephen Muecke所解释的那样,出于安全考虑,我不允许这样做:

- 出于安全原因,您无法设置文件输入的值。它只能由用户在浏览器中选择文件来设置 - 如果因为ModelState无效而需要返回视图,请暂时保存文件,并返回其文件名,以便用户可以查看已上载的内容。这个插件可能是有意义的

谢谢大家!