如何访问服务器端的回形针附件?

ran*_*alo 3 ruby-on-rails paperclip

我正在使用paperclip将excel文件附加到模式.

目的是将数据从excel文件导入数据库.

Model: Import
has_attached_file: spreadsheet
Run Code Online (Sandbox Code Playgroud)

对于导入过程,我想访问模型中的文件,如下所示.

path = "#{Rails.root}/public/#{spreadsheet.url}"    
Run Code Online (Sandbox Code Playgroud)

这不起作用.我猜是因为网址末尾有时间戳.

一般来说,访问服务器端附件的最佳方法是什么?

Bre*_*der 5

我想你正在寻找这种to_file方法.你应该可以做这样的事情:

excel_file = self.spreadsheet.to_file
Run Code Online (Sandbox Code Playgroud)

它将从服务器返回上传的文件(如果您正在使用s3或远程存储),或者是否已将其分配给模型但尚未实际存储(如果您上传时尚未调用model.save) ),它返回存储在磁盘上的临时文件.

从那里你应该能够使用excel gem或库来解析内容.

或者,您可以使用spreadsheet.url(nil, false)- 第二个参数表示是否附加时间戳.

  • 不再支持.to_file,而是使用.path或.copy_to_local_file(style,local_dest_path) (2认同)
  • 现在使用的方法而不是“to_file”是“Paperclip.io_adapters.for(file).read” (2认同)