在我的MVC应用程序中,我正在使用以下代码上传文件。
模型
public HttpPostedFileBase File { get; set; } 视图
@Html.TextBoxFor(m => m.File, new { type = "file" }) 一切正常..但是我试图将结果字段转换为byte []。我该怎么做
控制器
public ActionResult ManagePhotos(ManagePhotos model) { if (ModelState.IsValid) { byte[] image = model.File; //Its not working .How can convert this to byte array } } 问题来源于stack overflow
正如Darin所说,您可以从输入流中读取信息-但我会避免一次依赖所有可用数据。如果您使用的是.NET 4,这很简单:
MemoryStream target = new MemoryStream(); model.File.InputStream.CopyTo(target); byte[] data = target.ToArray(); CopyTo如果需要,编写.NET 3.5中的等效代码非常容易。重要的部分是您从阅读HttpPostedFileBase.InputStream。
为了提高效率,您可以检查返回的流是否已经是MemoryStream:
byte[] data; using (Stream inputStream = model.File.InputStream) { MemoryStream memoryStream = inputStream as MemoryStream; if (memoryStream == null) { memoryStream = new MemoryStream(); inputStream.CopyTo(memoryStream); } data = memoryStream.ToArray(); }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。