【发布时间】:2012-06-03 07:30:36
【问题描述】:
我需要一些帮助..
我正在尝试在绘制后保存画布图像..
$("#btnSave").click(function () {
var image = document.getElementById("canvas").toDataURL("image/png");
image = image.replace('data:image/png;base64,', '');
$.ajax({
type: 'POST',
url: "../../Home/UploadImage?imageData=" + image,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
alert('Image saved successfully !');
}
});
});
控制器:
public void UploadImage(string imageData)
{
string fileNameWitPath = path + DateTime.Now.ToString().Replace("/", "-").Replace(" ", "- ").Replace(":", "") + ".png";
using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
byte[] data = Convert.FromBase64String(imageData);
bw.Write(data);
bw.Close();
}
}
}
但是当我试图将在方法中像参数一样传递的字符串转换成base64格式时,会抛出一个错误
Base-64 字符数组的长度无效。
【问题讨论】:
-
图像附加到 imageData 时有多长?如果它相当大(> 1500 个字符),那么我怀疑您的网址被截断了。尝试通过警报或其他方式直接从网页中获取值,并在 .NET 程序中使用它来确定它是否适用于完整的图像数据长度。如果可行,请使用内容通过 post 而不是 url?param=data 发送数据(此处仍受 2,000 个字符的限制)
-
除了@PeterSmith 的建议,既然你反正是在做POST,不妨把它放在POST 数据中。
-
imageData 有 1400 个字符。我在控制器中获取字符串,但是当我尝试从 base 64 字符串(myString)转换时抛出 FormatException(Base-64 字符数组的长度无效。)
-
@Fausto 你是如何解决这个问题的?您是否按照建议使用了 contentType,因为它对我不起作用
-
contentType应该是ContentType。
标签: javascript c# file-upload html5-canvas base64