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