may*_*ron 24 ajax jquery canvas ruby-on-rails ruby-on-rails-3
我正在尝试使用send_data
返回PNG图像作为ajax post请求的响应.如何让浏览器触发成功回调的下载?
我使用生成一个大的base64图像canvas.toDataURL()
,然后将其发布到Rails(v3.2.6).Rails将其解码为二进制PNG,并将图像发送回客户端.
我也试过,send_file
但它有同样的问题.
下载图像客户端:我们不能这样做,因为(1)Safari在大型base64 URL上崩溃,以及(2)Safari尚不支持锚标签上的下载属性,我需要指定下载的图像文件名.
使用a $.get
而不是$.post
:我们不能这样做,因为我们需要canvas.toDataURL()
将请求发送到服务器.GET
请求URI具有大小限制.
Asn*_*tta 22
在控制器中创建一个函数
def ajax_download
send_file "path_to_file/" + params[:file]
end
Run Code Online (Sandbox Code Playgroud)
然后在控制器动作中
respond_to do |format|
@java_url = "/home/ajax_download?file=#{file_name}"
format.js {render :partial => "downloadFile"}
end
Run Code Online (Sandbox Code Playgroud)
并使用_downloadFile.js.erb创建部分视图文件夹名称并写入此行
window.location.href = "<%=@java_url %>"
Run Code Online (Sandbox Code Playgroud)