簡體   English   中英

如何使用rubyzip將zip存檔中的文件附加到ActiveStorage對象Rails 5

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM