将base64编码的图像字符串的内容保存到文件中

时间:2018-10-15 15:31:16

标签: c# asp.net-mvc

我想将图像路径保存在数据库中。我使用的字符串类型图像不保存在文件夹中,但图像名称也保存在数据库中。我正在使用字符串,因此SaveAs()无法编译。

为什么我使用字符串?因为当我使用public HttpPostedFileBase imagefile {get;set;}时,它在控制器中显示一个空值。

型号

   public string imagePath { get;set; } // contains the name of the image
   public string imageFile { get;set; } // contains string bytes 

C#

byte[] data = Convert.FromBase64String(Quot[i].imageFile.Replace("data:image/jpeg;base64,", ""));

Image img;
MemoryStream ms = new MemoryStream(data, 0, data.Length);
ms.Write(data, 0, data.Length);
img = Image.FromStream(ms, true);


string fileName = Path.GetFileNameWithoutExtension(Quot[i].imagePath);
string extension = Path.GetExtension(Quot[i].imagePath);
fileName = fileName + DateTime.Now.ToString("dd/MM/yyyy") + extension;
Quot[i].imagePath = "~/AppFiles/Images/" + fileName;
fileName = Path.Combine(HttpContext.Current.Server.MapPath("~/AppFiles/Images/"), fileName);
Quot[i].imageFile.SaveAs(fileName);

1 个答案:

答案 0 :(得分:0)

  

为什么我使用字符串?因为当我使用public HttpPostedFileBase imagefile {get;set;}时,它在控制器中显示一个空值。

然后解决该问题,而不是将代码转换为可使用base64字符串。

例如参见HTTPPostedFileBase always return null in controller

无论如何,如果要保存byte[] data包含字节的图像,则只需将这些字节写入文件中即可。

File.WriteAllBytes(fileName, data);