开发者社区 问答 正文

将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 716 分享
分享
版权
举报
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 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答分类:
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等