gpt4 book ai didi

ruby-on-rails - 如何使用 Rails send_data 从 AJAX 帖子触发下载

转载 作者:行者123 更新时间:2023-12-03 21:39:12 25 4
gpt4 key购买 nike

我正在尝试使用 send_data 返回 PNG 图像作为 ajax post 请求的响应。如何让浏览器在成功回调时触发下载?

详细信息

我使用 canvas.toDataURL() 生成一个大型 Base64 图像,然后将其发布到 Rails (v3.2.6)。 Rails 将其解码为二进制 PNG,并将图像发送回客户端。

我也尝试过 send_file 但它也有同样的问题。

其他选项

  1. 下载图像客户端:我们无法执行此操作,因为 (1) Safari crashes on large base64 URLs和 (2) Safari does not yet support the download attribute on anchor tags我需要指定下载的图像文件名。

  2. 使用 $.get 而不是 $.post: 我们不能这样做,因为我们需要发送我们的canvas.toDataURL() 向服务器发出请求。 GET 请求 URI 有大小限制。

最佳答案

在 Controller 中创建一个函数

def ajax_download
send_file "path_to_file/" + params[:file]
end

然后在 Controller 操作中

respond_to do |format|
@java_url = "/home/ajax_download?file=#{file_name}"
format.js {render :partial => "downloadFile"}
end

并使用 _downloadFile.js.erb 在 View 文件夹名称中创建部分内容并写入此行

window.location.href = "<%=@java_url %>"

关于ruby-on-rails - 如何使用 Rails send_data 从 AJAX 帖子触发下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16242359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com