Ruby on rails rails 3.1:为什么不重定向到启动文件下载?
我在远程服务器Apache+Tomcat上有一些不同于Rails应用程序所在服务器的PDF文件。我希望用户能够在单击“另存为”对话框上的“确定”后下载它们 因此,在我的控制器中,我有一个处理下载请求的操作。此操作只是将_重定向到 PDF的URL。问题是“另存为”对话框无法打开Ruby on rails rails 3.1:为什么不重定向到启动文件下载?,ruby-on-rails,pdf,download,Ruby On Rails,Pdf,Download,我在远程服务器Apache+Tomcat上有一些不同于Rails应用程序所在服务器的PDF文件。我希望用户能够在单击“另存为”对话框上的“确定”后下载它们 因此,在我的控制器中,我有一个处理下载请求的操作。此操作只是将_重定向到 PDF的URL。问题是“另存为”对话框无法打开 def download url = "#{server}/...../file.pdf" redirect_to url end 但是,如果我要获取PDF的完全限定URL并将其插入浏览器的地址栏中,则会出现所
def download
url = "#{server}/...../file.pdf"
redirect_to url
end
但是,如果我要获取PDF的完全限定URL并将其插入浏览器的地址栏中,则会出现所需的行为
这两个请求之间显然存在差异。例如,我没有设置内容配置或内容类型,因为我不知道如何设置。或者,将你的注意力转向是一个错误的方向
所以我希望这里的人能帮助我理解为什么:
显然,使用重定向到的解决方案不起作用
为什么1可能不是首选选项,而像send_file这样的选项更经常被建议。
如果使用send_file,那么在调用send_file之前,我需要先将该文件带到Rails服务器。我该怎么做?
这项工作:
def sendfile(path)
headers["Location"] = path
redirect_to(path)
end
这项工作:
def sendfile(path)
headers["Location"] = path
redirect_to(path)
end
试一试
试一试
将Content Disposition标头设置为attachment,其中包含希望用户下载文件的文件名。像这样的
Content-Disposition: attachment; filename="fname.ext"
将Content Disposition标头设置为attachment,其中包含希望用户下载文件的文件名。像这样的
Content-Disposition: attachment; filename="fname.ext"
那么它现在做什么呢?只需在浏览器中打开pdf?可能是Varatis的副本->据我所知,没有发生什么。我被重定向到并完成了126ms消息中的302,但没有“另存为”对话框。Firebug中的响应头的位置设置为正确的URL。但是内容类型是text/html,我想应该是application/pdf。设置标题[内容类型]会有帮助吗?无论如何,我不知道这两个调用的区别在哪里——从Rails应用程序重定向到和从浏览器直接调用——liesSo什么——它现在做了什么?只需在浏览器中打开pdf?可能是Varatis的副本->据我所知,没有发生什么。我被重定向到并完成了126ms消息中的302,但没有“另存为”对话框。Firebug中的响应头的位置设置为正确的URL。但是内容类型是text/html,我想应该是application/pdf。设置标题[内容类型]会有帮助吗?无论如何,我不知道这两个调用之间的区别在哪里-从Rails应用程序重定向到和从浏览器直接调用-liesReed->如果我在Firebug中看到响应头,那么位置设置为正确的URL。在这种情况下,是否有必要进行上述工作?另一方面,内容类型是“text/html”——这显然是错误的。如果我在Firebug中看到响应头,那么位置设置为正确的URL。在这种情况下,是否有必要进行上述工作?另一方面,内容类型是“text/html”——这显然是错误的。这不应该是一个改变吗?