【问题标题】:Shorter Version of Base64? [duplicate]Base64 的较短版本? [复制]
【发布时间】: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


【解决方案1】:

我的问题在于使用 jsonp 而不是 json。由于 jsonp 仅发送 GET 请求,因此 Base64 字符串被添加到 URL 中,而不是在 POST 正文中发送。将数据类型更改为 json 并解决我的 CORS 问题解决了我的问题。

【讨论】:

    猜你喜欢
    • 2015-08-31
    • 2016-08-03
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2016-10-20
    相关资源
    最近更新 更多