Хранение пути загруженного файла в базе данных - PullRequest
2 голосов
/ 27 февраля 2012

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

Вопрос:

Как хранитьпуть к файлу в базе данных, когда пользователь нажимает кнопку загрузки?

Ниже приведен сценарий:

Форма состоит из следующего:

Title box:
File select box:
Upload button:

Таблица базы данных состоит только из двух столбцов, title (Title) и file's path (FilePath) в файловой системе

Пользователь заполняет заголовок, просматривает файл в своей системе и нажимает кнопку загрузки.Кнопка, файл затем должен быть сохранен на диске, скажем, /public/uploads/file1.zip, в то же время записывая в базу данных MySQL заголовок загрузки, а также путь к фактическому файлу, который находится сейчас в /public/uploads/file1.zip.

На другой странице я могу просто запросить базу данных, чтобы получить заголовок и путь к файлу, который будет отображать заголовок и ссылку / путь к файлу, на который пользователь может просто щелкнуть и загрузить.

Этобудет отображатьсяна странице следующим образом:

Заголовок - Загрузить

, т. е. Документ конференции на 27-е - Загрузить

Где "Заголовок" = отправленный пользователем заголовок файла и "Загрузить" =Фактическая ссылка, по которой вы можете щелкнуть, извлечет файл с диска и начнет загрузку.Это должен быть один запрос из базы данных, который извлекает заголовок и путь к файлу.Запрашивающая часть, которую я знаю, как сделать.Это всего лишь часть загрузки файла в этот каталог, сохранения каталога для этого конкретного файла в базе данных и его заголовка, отправленного пользователем.

Будем весьма благодарны за любые предложения, примеры и ресурсы.Спасибо за ваше время.

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Чтение загрузка файлов из направляющих , а затем чтение CarrierWave README .По сути это:

# in the model
mount_uploader :archive, ArchiveUploader, mount_on: :archive_path

# in the controller action
@record = YourModel.new(params[:record]) # moves the file from server upload path to CW cache dir
@record.save # moves the file from CW cache dir to final fs dir, and stores path in mounted_on column

# in the form
<%= f.file_field :archive %>

# in the view
<%= link_to 'Download', @record.archive_url %>

Путь к файловой системе будет сохранен в столбце таблицы, к которой вы подключаетесь.

0 голосов
/ 27 февраля 2012

Как уже упоминалось @clyfe, carrierwave - это способ загрузки файлов, так как вы хотите, чтобы carrierwave сохранит файл на диске и сохранит путь в БД.

сам файл readme содержит большинство деталей для его настройки

Как только вы настроите его правильно, его очень легко и больше всего он работает с рельсами 2.x и 3.x.

Ниже приведен хороший скриншот, который вы можете проверить

НТН

...