我正在尝试从网址下载文件并将其传递给我的用户。
为了使其工作,我需要构建一个HTTP GET请求,如下所示:
https://some.service.com/api/pdf?doc_id=99&data[info1]=some+info&data[info2]=more+info
当我在浏览器中发出它并且我得到正确的文档包括返回的正确数据时,这样可以正常工作。
我想以编程方式执行相同的操作:
我的两个问题是:
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
非常感谢任何帮助。
答案 0 :(得分:2)
我能够用参数解决问题。如果我按照这样的方式调用参数,那么这些参数会起作用:
def request_and_send_file
response = RestClient.get("https://some.service.com/api/pdf", :params => {
doc_id: 99,
"data[info1]" => "some info",
"data[info2]" => "more info"})
send_data response.body, filename: "customer.pdf", disposition: "attachment", :content_type => 'application/pdf'
end
我仍然无法理解的是,为什么我无法通过send_file
提供来自HTTP通话的文件,但必须使用send_data
。