将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

        }


人到中年有点甜
浏览 1999回答 3
3回答

茅侃侃

正如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();}

动漫人物

这对我有用,只是提供一些背景信息-谢谢!`Image img = Image.FromStream(file.InputStream); MemoryStream ms =新的MemoryStream(); img.Save(ms,ImageFormat.Jpeg); model.SiteLogo = ms.ToArray();`
打开App,查看更多内容
随时随地看视频慕课网APP