数组 – 将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
        }
     }
正如Darin所说,你可以从输入流读取 – 但我会避免依赖所有的数据在一个单一的。如果你使用.NET 4,这很简单:

MemoryStream target = new MemoryStream();
model.File.InputStream.CopyTo(target);
byte[] data = target.ToArray();

如果你愿意的话,在.NET 3.5中写相当于CopyTo的函数很简单。重要的是你从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();
}
http://stackoverflow.com/questions/7852102/convert-httppostedfilebase-to-byte

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:数组 – 将HttpPostedFileBase转换为byte []