protected void ExportToImage(object sender, EventArgs e)
{
string base64 = Request.Form[hfImageData.UniqueID].Split(',')[1];
byte[] bytes = Convert.FromBase64String(base64);
File.Copy(bytes.ToString()+".jpg", "\\\\192.168.2.9\\Web");
}
我从jquery获得的hfImageData数据,在用户完成绘图之后,我将 convas 转换为base64。 然后调用c#函数将base64转换为jpg图像文件到服务器并存储到DB中。
当我触发onclick按钮时出现错误: System.IO.FileNotFoundException:找不到文件'System.Byte []。jpg'。
任何想法为什么?
答案 0 :(得分:2)
bytes.ToString()
不会返回任何有意义的内容。
你的字节不是文件;你无法复制它们。
相反,请调用File.WriteAllBytes()
将它们直接写入新文件。
答案 1 :(得分:0)
在这一行File.Copy(bytes.ToString()+".jpg", "\\\\192.168.2.9\\Web");
中,您实际上是在尝试转换bytes数组的内容并将其用作图像名称,但这实际上并不会创建该文件。
bytes.ToString()
只返回对象的类型而不是内容。这就是你看到System.Byte[].jpg
解决问题的方法是改变你的功能:
protected void ExportToImage(object sender, EventArgs e)
{
string base64 = Request.Form[hfImageData.UniqueID].Split(',')[1];
byte[] bytes = Convert.FromBase64String(base64);
//write the bytes to file:
File.WriteAllBytes(@"c:\temp\somefile.jpg", bytes); //write to a temp location.
File.Copy(@"c:\temp\somefile.jpg", @"\\192.168.2.9\Web");//here we grab the file and copy it.
//EDIT: based on permissions you might be able to write directly to the share instead of a temp folder first.
}