2009-08-25 5 views
0

Мне нужно проверить бит загруженного файла, прежде чем он будет сохранен в файловой системе. В документации PHP есть хорошая страница, которая подскажет мне, какие свойства доступны для меня (http://us3.php.net/manual/en/features.file-upload.post-method.php), но я не могу найти что-то подобное для Ruby и/или Rails.RoR: проверка загруженного файла

Я также попытался зарегистрировать строку в формате JSON для загрузки, но это просто дает мне избыточную ошибку UTF-8. Я не могу придумать ничего другого, чтобы попробовать.

Может ли кто-нибудь предложить какую-либо информацию или указать мне нужное место?

Спасибо.

ОБНОВЛЕНИЕ: Я использую Apache 2.2.11 на OS X (Leopard) в случае, если Питер прав (см. Ниже).

UPDATE: В случае, если это помогает, мой входной параметр зарегистрирован как "upload"=>#<File:/tmp/RackMultipart.64239.1>. Я просто не уверен, как получить доступ к нему, чтобы добраться до его «частей».

ответ

4

Насколько я мог сказать или найти, нет никакого физического файла, пока загрузка не будет читать. Это связано с ответом Дерфреда. Только метаданные, которые могут доступ является:

uploaded_file.content_type # the uploaded file's MIME type 
uploaded_file.original_path # which is really just the name of the file 

Кроме того, есть read метод на uploaded_file, что позволяет файл»содержимое быть доступны и, по-видимому, записывается в постоянной файловой системы.

Что-то еще, что я заметил, что только означает, рубин предлагает для осмотра MIME тип файла в этом content_type свойстве загруженного файла. Как только файл находится в файловой системе, больше нет способа доступа или определения типа MIME.

0

Я думаю, что это зависит от используемого вами веб-сервера. Я помню, что у меня были разные поля для mongrel, apache и nginx.

+0

Ugh. Я обновлю исходный вопрос. Я удивляюсь, как мало информации я могу найти для этого или о любом способе надежного сброса загрузки. –

0

Это просто объект File, то, что вы можете дублировать, перейдя:

File.open("some_file") 

В /tmp/RackMultipart.64239.1 это просто имя файла.

Если вы хотите увидеть/вывода его содержимое из контроллера:

puts params[:upload].read 
+0

Я предполагаю, что я предположил, что имя файла представляет собой физический файл, который я мог бы проверить, прежде чем сохранять его в постоянном месте. Это, похоже, не так. Есть такие свойства, как content_type и original_filename, которые можно почерпнуть из загрузки, но я не могу найти полный набор свойств, доступных в то время. –

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