не может записывать загруженные файлы в рельсы - PullRequest
0 голосов
/ 11 октября 2010

Я все еще довольно новичок в рельсах, но я уже делал загрузку файлов раньше.Я пытаюсь реализовать очень простую загрузку файлов - ничего особенного, просто загрузите файл, сохраните его и запишите его.Вот мой метод сохранения файла:

def self.save(upload,name)
    directory='public/uploads'
    ext=File.extname(upload.original_filename)
    path=File.join(directory, "#{name}#{ext}")
    File.open(path,'wb') { |f| f.write(upload.read) }
end

Файл, по-видимому, действителен, так как extname () получает правильное расширение.Новый файл создан в правильном месте.Но почему-то запись не удалась, так как файл всегда пуст.Не имеет значения, какой тип файла я использую.Что может быть не так?Я использую Rails 3.0, если это имеет значение.

1 Ответ

1 голос
/ 12 октября 2010

Попробуйте сделать File.open(path,'wb') { |f| f.write(upload.read); f.close }

Возможно, буфер ввода-вывода не сбрасывается, но закрытие файла должно сбрасывать его.

Кроме того, я настоятельно рекомендую использовать такой плагин, как paperclip для выгрузки файлов, просто потому, что выгрузкой файлов может быть неудобно управлять, а paperclip предоставляет очень хороший способ абстрагировать большую часть этого в соглашениях, так что вы можете просто добавить пару столбцов и сделать model.upload = params[:file].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...