gpt4 book ai didi

ruby-on-rails - rails : How to create a file from a controller and save it in the server?

转载 作者:行者123 更新时间:2023-12-02 02:22:17 26 4
gpt4 key购买 nike

由于某些奇怪的原因,我需要在服务器中保存一个文件(通常是直接下载的)。在我的例子中,我有一个用 PDFKit 创建的 PDF 文件,我需要保留它。

# app/controllers/reports_controller.rb
def show
@report = Report.find(params[:id])

respond_to do |format|
format.pdf { render :text => PDFKit.new(report_url(@report)).to_pdf }
end
end

如果我转到 reports/1.pdf,我会得到我期望的报告,但我想将它保存在服务器中。

有没有一种 Raily 方法可以通过响应将文件保存在服务器中?

最佳答案

在我得到实际答案之前,请快速注意一下:您似乎正在将完全限定的 URL (report_url(@report)) 传递给 PDFKit.new,这是一种浪费——这意味着 PDFKit 必须向 web 服务器发出请求,而 web 服务器又需要通过 Rails 的路由器等来获取页面内容。相反,您应该只使用 render_to_string 在 Controller 中呈现页面并将其传递给 PDFKit.new,因为它将接受 HTML 字符串。牢记这一点...

这包含在 PDFKit's README 的“使用”部分中.你会做这样的事情:

def show
@report = Report.find(params[:id])

kit = PDFKit.new render_to_string(@report) # pass any options that the
pdf_file = kit.to_file '/some/file/path.pdf' # renderer needs here (same
# options as `render`).
# and if you still want to send it to the browser...
respond_to do |format|
format.pdf { render :file => pdf_file.path }
end
end

关于ruby-on-rails - rails : How to create a file from a controller and save it in the server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7588358/

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