Загрузка и хранение изображений в бд

Тема в разделе "PHP", создана пользователем KODEAK, 12 апр 2011.

Модераторы: latteo
  1. KODEAK

    KODEAK

    Регистр.:
    11 апр 2009
    Сообщения:
    160
    Симпатии:
    15
    Посоветуйте где почитать, или натолкните на идею реализации хранения и загрузки изображений для каждого пользователя в БД
    Я так полагаю что нужно создать отдельную базу банных что бы это реализовать, но не могу понять что нужно именно хранить в базе данных, ссылки на файл ? или что ?
     
  2. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    либо ссылки на файл либо просто имена файлов зависит от того как эти рисунки выводятся скриптом
     
    KODEAK нравится это.
  3. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    бинарные поля позволяют хранить фаилы,
    текстовые ссылки,
    правильнее хранить ссылки, и потом их отдавать пользователю.
    например
    где
     
    KODEAK нравится это.
  4. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    200
    Симпатии:
    55
    Если файлов у пользователя много, целесообразно каждому юзеру отвести папку типа /userimages/1/. Если файлов немного, например только аватарки, можно не делить по папкам и кидать в общую.

    При загрузке файла на сервер файл помещается во временную директорию и находится там до окончания работы скрипта. Потом он удаляется. Обычно его из временной директории помещают в нужную функциями move_uploaded_file() или copy(). Файлу присваивается новое имя что-то типа 32А321АА6DEC11.расширение. Такие случайные имена генерируются скриптом с обязательной проверкой на существование такого в данной папке. Иначе в случае совпадения можно затереть уже существующий. Именно это случайное имя в случае успешнного копирования/перемещения записывается в БД.
     
    KODEAK нравится это.
  5. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    дополню - если картинка всего одна (к примеру аватарка), то можно вообще обойтись без базы...
    достаточно после загрузки файла переименовать его так же как и логин пользователя - я надеюсь логины вы проверяете при регистрации, чтобы не было одинаковых?

    т.е. путь к картинке получится вида хттп://сайт.ком/папка_с_картинками/логин_юзера.jpg
     
  6. KODEAK

    KODEAK

    Регистр.:
    11 апр 2009
    Сообщения:
    160
    Симпатии:
    15
    t3s - такой вариант не подойдет, так как изображений много.
    Поповоду шелов, обрезов изображение на 2% и пересоздав его можно будет обезопаситься от этого ?
     
  7. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    если вас интересуют вот такие методы
    http://habrahabr.ru/blogs/php/44610/
    то да
    кроме того не забывайте что тип файла и расширение - абсолютно разные вещи... лучше всего проверить и то и другое
     
  8. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    если правильно проставишь права на файлы и папки, будет уже все равно что тебе зальют.
     
  9. Xata6

    Xata6 Постоялец

    Регистр.:
    20 мар 2007
    Сообщения:
    84
    Симпатии:
    5
    мелкие аватарки без больших, можно в бд держать вариант чтения картинки file_get_contents и перегон ее в base64_encode, далее залив в бд

    но лучше все кета держать 1 линк на картинки и отдавать скриптом как указывалось выше
     
  10. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    достаточно хранить только имя картинки и расширение, линки могут меняться.