我正在尝试从 URL 下载文件并将其传递给我的用户。
为了使它工作,我需要构造一个 HTTP GET 请求,如下所示:
https://some.service.com/api/pdf?doc_id=99&data[info1]=some+info&data[info2]=more+info
当我在浏览器中发出它并且我得到正确的文档(包括返回的正确数据)时,这工作正常。
我想以编程方式做同样的事情:
- 构建查询并通过 rest-client 请求文件。
- 通过 send_file 将文件提供给用户。
我的两个问题是:
- 我在将参数传递给rest-client的方式上犯了一个错误,但是我没有找到检查结果查询实际上是什么的方法。这让我很难看出我做错了什么,因为我只是将结果调用与我的浏览器调用进行比较。所有参数,除了
data[]
那些工作正常。 - 我只能通过 提供正确的文档(减去正确的数据)
send_data
,这意味着我必须再次指定类型和文件名。这没有任何意义,因为我正在下载的 PDF 已经很好地用于命名和一切。send_file
返回错误。
这是我的代码:
def request_and_send_file
response = RestClient.get("https://some.service.com/api/pdf", :params => {
doc_id: 99,
:data => {
info1: "some info",
info2: "more info"}})
send_data response.body, filename: "hochzeitsfeder.pdf", disposition: "attachment", :content_type => 'application/pdf'
end
任何帮助是极大的赞赏。