【发布时间】:2019-09-19 16:47:16
【问题描述】:
我正在尝试通过 Ajax 将图像传递给我的 MVC 控制器。目前我正在尝试将它作为 Base64 字符串传递,但它太长并且抛出错误 414(大约 33,000 个字符)。
Base64 字符串来自在我拥有的画布上调用 toDataUrl,画布是当前浏览器窗口的“屏幕截图”。
有没有更好的方法将画布图像传递给我的控制器?
var imgBase64 = canvas.toDataURL('image/jpg').replace('data:image/png;base64,', '');
$.ajax({
url: "API Url - Actual URL is in code just removed here",
data: {
"imgBase64":imgBase64
},
contentType: "application/json; charset=utf-8",
dataType: "jsonp",
type:"POST",
success: function(res){
console.log("Success");
}
});
【问题讨论】:
-
您使用
jsonp有什么特殊原因吗? -
请使用 Chrome 开发者工具(网络标签)并与我们分享您发布到的 URL 以及请求的正文。
-
@mjwills 我遇到了一些 CORS 问题,暂时使用 jsonp 绕过它,尝试先解决这个问题。
-
图片不适合作为 URL 的一部分传递。某些浏览器(例如 IE)将您限制为 2K 个字符。你现在是 33K - 这比 2K 大很多。
-
@mjwills 我解决了,感谢您对 jsonp 的评论。我做了更多的研究并了解到它只发送 GET 请求,因此我的 Ajax 正文被添加到 URL 中。我已经修复了我的 Ajax 以将标准 Json 作为 Post 发送,现在它正在按预期通过正文发送 Base64。
标签: javascript c# base64