2014-02-16 2 views
3

У меня есть задача rake, которая извлекает XML-документы и сохраняет их в модели в моем приложении. Задача работала, пока я не добавил проверку content_type моделиКак установить тип содержимого для временного файла

задача теперь выдает ошибку:

Datafile content type is invalid, Datafile is invalid 

Как я могу установить CONTENT_TYPE ТМП файла в текст/XML, так что проверка проходит?

Код задачи ниже:

task :fetch_documents => :environment do   
    Net::FTP.open("www.example.com", "xxxxx", "xxxxx") do |ftp|   
     ftp.nlst.each do |file_name| 
     tmp = Tempfile.new(['foo', '.xml' ]) 
     ftp.gettextfile(file_name, tmp.path) 
     # save it 
     document = Document.new 
     document.file_name = File.basename(file_name) 
     document.datafile = tmp 
     document.save! 
     tmp.close 
     end 
    end 
    end 
+1

это может помочь - http://stackoverflow.com/questions/11621863/setting-content-type-for-mp4-files-on-s3?rq=1 – devanand

+0

@devanand благодарит, но это не только s3 , Я просто запускаю задачу локально. – Will

+0

@devanand действительно, это помогло:) - это привело к использованию MIME :: Types.type_for ("filename.xml"). First.content_type, чтобы получить тип содержимого, который был application/xml, - добавив это к проверке модели провела меня. благодаря! – Will

ответ

1

я смог узнать тип содержимого, чтобы использовать так:

gem install mime-types 

и добавил к моей передней задачи:

require 'mime/types' 

Затем я ворвался в штифт и использовал

MIME::Types.type_for(tmp.path).first.content_type 

, который позволил мне добавить правильный тип пантомимы для модели валидации:

application/xml 

Я не знаю, почему файлы приложения/XML, когда форма загруженные файлы текст/XML, но в ретроспективе , довольно очевидное решение!

Смежные вопросы