В моем приложении Rails пользователи могут загружать файлы Excel. В моей модели есть класс ImportFile, который использует attachment_fu так:
class ImportFile < ActiveRecord::Base
has_attachment :storage => :file_system, :path_prefix => 'public/imports', :max_size => 10.megabytes
end
Когда пользователь нажимает «Добавить файл», он входит на страницу с <% = fields.file_field: uploaded_data%>. attachment_fu выполняет свою работу, и загрузка файла выполняется (давайте пропустим проблемы проверки). Я хочу сохранить этот файл на будущее, чтобы скопировать загруженный файл в другой временный файл. Временный файл работает нормально - я вижу его на диске.
def self.write_to_tmp(data)
temp_file = Tempfile.new("import", "#{Rails.root}/tmp")
begin
temp_file.write(data)
ensure
temp_file.close(false)
end
temp_file
end
Что я хочу сделать, это показать пользователю предварительный просмотр, а затем позволить ему выбрать, хочет ли он добавить файл или отказаться от него - есть две кнопки. У меня проблема, когда пользователь решает сохранить файл, потому что временный файл, который я только что создал, пропал. Он удаляется до запроса.
У кого-нибудь есть советы, как этого добиться? Или можете указать мне на сценарий загрузки файла с предварительным просмотром, подобный тому, который я представил? Я искал несколько дней, но мне так и не удалось найти.