簡體   English   中英

RoR-使用gmail gem下載ZIP文件

[英]RoR - Download ZIP file using gmail gem

我正在嘗試設置一些耙任務。 它要求我連接到gmail並下載作為附件發送的Zip文件。

我已經編寫了以下代碼(對於下載csv效果很好)-

gmail = Gmail.connect(ENV["USERNAME"], ENV["PASSWORD"])
msg = gmail.inbox.find(from: ENV["REC_USER"], 
  subject: args[:subject])
dir_path = "lib/mfu_payment_data/"
Dir.mkdir dir_path unless File.exists?(dir_path)

if msg.first
  msg.first.attachments.each do |attachment|
   File.write(File.join(dir_path,attachment.filename),attachment.body.decoded)
  end
end

它引發以下錯誤-

rake aborted! 
Encoding::UndefinedConversionError: "\xED" from ASCII-8BIT to UTF-8

我認為這與attachment.body.decoded有關,但是我不知道該怎么做。

您可以嘗試以二進制模式寫入文件:

File.open('/path/to/file;, 'wb') { |file| file.write(attachment.body.decoded) }

"b"二進制文件模式在Windows上禁止EOL <-> CRLF轉換。 除非明確指定,否則將外部編碼設置為ASCII-8BIT。

File繼承自的IO類中描述了這些模式。

我認為您有很多選擇來生成zip文件

下載並解壓縮

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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