开发者社区> 问答> 正文

将HttpPostedFileBase转换为byte []

在我的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

展开
收起
保持可爱mmm 2020-02-07 23:10:07 684 0
1 条回答
写回答
取消 提交回答
  • 正如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(); }

    2020-02-07 23:10:17
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载