我会在网络服务器中下载PDF文件。我使用Net :: HTTP Ruby类。
def open_file(url)
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.path)
request.basic_auth(self.class.user, self.class.password)
http.request(request)
end
它有效,我检索我的PDF文件,它是一个字符串,如:%PDF-1.3\n%\ ...
我有一个返回结果的方法:
def file
result = open_file(self.file_url)
times = 0
if result.code == 404 && times <= 5
sleep(1)
times += 1
file
else
result.body
end
end
(这是一种递归方法,因为可能该文件在服务器上不再存在)
但是当我用Paperclip保存这个文件时,我有一个错误:Paperclip::AdapterRegistry::NoHandlerError (No handler found for "%PDF-1.3\n% ...
我尝试用StringIO
操纵文件...但没有成功:(。
有人有想法吗?
答案 0 :(得分:4)
假设您获得的PDF对象没问题(我不是100%确定),那么您可以这样做:
file = StringIO.new(attachment) #mimic a real upload file
file.class.class_eval { attr_accessor :original_filename, :content_type } #add attr's that paperclip needs
file.original_filename = "your_report.pdf"
file.content_type = "application/pdf"
然后使用Paperclip保存文件。