![](/img/trans.png)
[英]rails rubyzip make a copy of multiple zip files inside a new zipfile
[英]How can I use rubyzip to attach files in a zip archive to an ActiveStorage object Rails 5
我有一個帶有使用ActiveStorage的附件的模型:
class ProofreadDocument < ApplicationRecord
has_one_attached :file
end
我正在執行一項rake任務,以將文件附加到proofread_document。 這些文件被壓縮到一個zip存檔中。
我了解可以通過閱讀ActiveStorage文檔來附加文件,如下所示:
@proofread_document.file.attach(io: File.open('/path/to/file'), filename: 'file.pdf')
我的瑞克任務有以下內容:
Zip::File.open(args.path_to_directory) do |zipfile|
zipfile.each do |file|
proofread_document = ProofreadDocument.new()
proofread_document.file.attach(io: file.get_input_stream.read, filename: file.name)
proofread_document.save
end
end
這將產生以下錯誤:
NoMethodError: undefined method `read' for #<String:0x007f8d894d95e0>
我需要一次讀取每個文件的內容,以將它們附加到proofread_document實例。 我怎樣才能做到這一點?
通過將輸入流包裝在StringIO對象中,我能夠成功完成如下工作:
self.file.attach(io: StringIO.new(zip_entry.get_input_stream.read), filename: zip_entry.name, content_type: MS_WORD_CONTENT_TYPE)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.