Как я могу добавить расположение файлов в базу данных после того, как они были загружены с использованием сценария Perl CGI? - PullRequest
1 голос
/ 29 марта 2010

У меня есть CGI-программа, написанная на Perl. Одна из его функций - загружать картинки на сервер.

Все это работает хорошо, включая добавление всех видов информации в базу данных MySQL. Мой вопрос: Как я могу получить расположение загруженных файлов изображений и имена, добавленные в БД?

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

Поскольку я новичок во всем этом, я в растерянности. Попытка сделать некоторые исследования и веб-поиска в течение 3 недель безуспешно. Любые предложения или ответы будут с благодарностью. Мне бы очень не хотелось вручную добавлять все места / имена в БД.

Я использую: CGI-скрипт Perl, MySQL db, сервер Linux и файлы загружаются на сервер. Я не ищу, чтобы добавить фактические файлы в БД. Просто их местоположение (я).

Ответы [ 2 ]

1 голос
/ 29 марта 2010

Звучит так, как будто у вас есть готовый метод, где вы берете загрузку, делаете ее строкой и отправляете ее в mysql, аналогично чтению файла в виде строки. Однако, поскольку вы дали дескриптор файла вместо имени файла для чтения CGI. Вы задаетесь вопросом, где этот файл на самом деле.

Если вы используете CGI.pm, то upload, uploadInfo, параметр для загрузки и загрузка личных файлов помогут вам разобраться с источниками файлов для загрузки. Где они спрятаны после того, как удаленный клиент и CGI сделаны, обычно не постоянны, а минимум изменчив.

0 голосов
/ 30 марта 2010

У вас есть куча загруженных файлов, которые нужно добавить в БД? Должно быть тривиально вычеркнуть одноразовый скрипт, чтобы пройтись по всем файлам и вставить детали в БД. Если все они находятся в одном месте, тогда простой цикл типа opendir () / readdir () перехватит их все, в противном случае вы можете составить список путей к файлам, которые можно зациклить и зациклить.

Если вы говорите о записи новых загрузок на сервер, то это будет примерно так:

  1. пользователь загружает файл на сервер
  2. извлекает из файла любую требуемую / необходимую информацию (имя, размер, тип mime, контрольные суммы и т. Д.)
  3. начать транзакцию базы данных
  4. вставить информацию о файле в базу данных
  5. получить идентификатор новой записи
  6. переместить загруженный файл в конечное место отдыха, используя идентификатор в качестве имени файла
  7. если все идет в файл, передайте транзакцию

Использование идентификатора в качестве имени файла решает проблемы конфликтов имен файлов и новых загрузок, перезаписывая предыдущие. А если вы сохраняете закачки где-то за пределами webroot сайта, то единственный доступ к файлам будет через ваши скрипты, предоставляя вам полный контроль над загрузками.

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