使用回形针上传静态 zip 文件失败,并出现 Paperclip::AdapterRegistry::NoHandlerError for filename.zip
Posted
技术标签:
【中文标题】使用回形针上传静态 zip 文件失败,并出现 Paperclip::AdapterRegistry::NoHandlerError for filename.zip【英文标题】:Uploading static zipfile using paperclip fails with Paperclip::AdapterRegistry::NoHandlerError for filename.zip 【发布时间】:2014-03-18 16:36:35 【问题描述】:我正在临时文件夹中创建 zipfile,但我无法将静态 zipfile 上传到 s3。它因错误 Paperclip::AdapterRegistry::NoHandlerError for myfilename.zip 而失败。这是我的代码
控制器
def create_zipfile
file = File.join(Rails.root, "public/temp_download/invoices_#timer.zip")
Zip::Archive.open(file, Zip::CREATE) do |ar|
Dir.glob("#Rails.root/public/temp_download/invoices_#timer/*").each do |path|
ar.add_file(path.split('/').last, path) # add_file(<entry name>, <source path>)
end
end
upload(pfile)
end
def upload(filename)
invoice_upload = InvoiceUpload.new
invoice_upload.invoice = filename
invoice_upload.save
end
型号
class InvoiceUpload < ActiveRecord::Base
has_attached_file :invoice,
:storage => :s3,
:url => 's3_domain_url',
:s3_host_alias => '***'
:s3_credentials => File.join(Rails.root, 'config', 's3.yml'),
:path => "/invoices/:style/:id_:filename"
end
【问题讨论】:
请分享InvoiceUpload
类。
刚刚用 InvoiceUpload 类编辑了我的帖子,谢谢。
【参考方案1】:
修改上传方式如下:
def upload(filename)
invoice_upload = InvoiceUpload.new
invoice_upload.invoice = Rack::Test::UploadedFile.new(filename)
invoice_upload.save
end
另外,upload(pfile)
在create_zipfile
中应该是upload(file)
,因为您的代码中没有名为pfile
的变量。
【讨论】:
以上是关于使用回形针上传静态 zip 文件失败,并出现 Paperclip::AdapterRegistry::NoHandlerError for filename.zip的主要内容,如果未能解决你的问题,请参考以下文章
带有回形针 Docx content_type 的 Rails 以 application/zip 的形式返回
使用 Ionic 创建大型多部分 zip 失败并出现 OutOfMemoryException