使用FileStream保存图像但图像无效

时间:2014-04-10 23:50:13

标签: asp.net-mvc image asp.net-mvc-4 base64 filestream

我从base64字符串中获取一个图像,存储在数据表中。这个字符串成功拉出并且是一个有效的base64字符串,因为我在免费图像解码网站上测试它并将其解码回我最初上传的图像。

现在,我正在尝试将图像写入文件,无论我尝试什么,它都无法正确创建图像文件。 图片仅显示我是否将其作为File(imageBytes, "image/jpeg")

返回到视图

这是我的代码:

            string imagepath = Path.Combine(Server.MapPath("~/Content"), client.ClientId + "_task" + task.TaskId + "_TaskReport.jpg");

            byte[] imageBytes = Convert.FromBase64String(myDataTable.Rows[0].ItemArray[1].ToString()); // this works elsewhere, but for some reason only when returning the image to the view as a FileResult


            using (var imageFile = new FileStream(imagepath, FileMode.Create))
            {
                imageFile.Write(imageBytes, 0, imageBytes.Length); // this line creates the bad image!
                imageFile.Flush();
            }

我的代码出了什么问题?为什么它与mvc FileResult一起使用而不是在转换为图像时呢?

2 个答案:

答案 0 :(得分:0)

尝试这样写文件

byte[] b= //Your Image File in bytes;
System.IO.File.WriteAllBytes(@"c:\data.jpg", b)

答案 1 :(得分:0)

试试这个,

[HttpPost]
        public ActionResult FileUpload(HttpPostedFileBase file)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (file != null && file.ContentLength > 0)
                    {                            
                        System.IO.MemoryStream target = new MemoryStream();
                        file.InputStream.CopyTo(target);
                        byte[] data = target.ToArray();                        
                    }
                }
                catch (Exception ex)
                {
                    throw;
                }
                return View("Index",model);
            }
            return View();
        }