你是对的,大多数浏览器限制URL的长度。 IE8/9的限制是2083个字符。即使您的浏览器具有更高的限制,许多服务器也会限制URL长度(Apache的默认限制约为8k)。最好使用POST主体中的数据作为POST请求提交图像。
我会使用jQuery将POST JSON数据发送到服务器。在控制器中,如果设置正确,则不必执行解析JSON的操作。 ActiveSupport将识别内容类型并自动将其解析为params哈希。
实际发布数据将取决于您使用的是哪个JavaScript库。以下是jQuery中的一个示例,您可能想要将它连接到提交按钮的onclick事件。这假定你有一个名为process_image的命名路由。这个代码会在你看来。
$.post(<%= process_image_path %>, { b64_img: "your_base64_image_data" });
在您的控制器中,您可以使用params [:b64_img]访问发布的数据。如果你想从控制器返回的东西回客户端,你可以在控制器中做到这一点:
render :json => @model_object
,并更改了jQuery调用这个样子,所以你可以做一些与返回值:
$.post(<%= process_image_path %>, { b64_img: "your_base64_image_data" },
function(data) {
// do something with the data returned by the controller
});
希望这会有所帮助。你可以阅读更多关于我在这里使用的jQuery post调用:http://api.jquery.com/jQuery.post/
Dan
来源
2011-11-19 02:12:22
Dan