Хранение изображений на mysql или сервере для управления контентом

Я использую систему php sql для управления изображениями на своем веб-сайте. Я могу легко загружать новые изображения, редактировать существующие и удалять их из mysql, используя php. Тем не менее, мне было чрезвычайно сложно заполнять флэш-галереи, созданные из xml, поскольку я не мог правильно перенести данные BLOB в xml.

Следовательно, я настроил сценарий загрузки, который вставляет изображение в папку «images» на моем сервере и добавляет идентификатор, путь к изображению, заголовок и галерею в таблицу mysql. Все работает правильно, но теперь, когда дело доходит до редактирования и удаления изображений, я застрял!

Вы бы порекомендовали мне придерживаться первой методологии (хранение изображений в виде BLOB) и попытаться выяснить, как заполнить слайд-шоу этими данными, ИЛИ придерживаться второго подхода и обратиться за советом о том, как редактировать и удалять изображения с помощью php?

Заранее спасибо за совет, теперь я все больше и больше нервничаю, пытаясь разобраться с этим! Все, что мне нужно, это простой инструмент для управления изображениями, который также может создавать слайд-шоу....!

JD


person JD2011    schedule 21.06.2011    source источник


Ответы (2)


Ваш новый подход, на мой взгляд, предпочтительнее, и я лично не знаю ни одного проекта в моей рабочей среде, который использует BLOB-объекты для хранения изображений (и у нас есть несколько замечательных решений web2print).

Я предлагаю вам найти несколько руководств по работе с файлами в Google. Это просто!

Ниже приведен крошечный пример того, как вы можете это сделать. Это включает в себя множество предположений, поскольку я не знаю ваших требований к настройке/коду/безопасности. Я предлагаю вам просто начать и опубликовать любые дальнейшие проблемы, с которыми вы можете столкнуться.

if ($_SERVER['REQUEST_METHOD'] == "POST") {

    // Get File info of file that has to be deleted.
    $iFileId = $_POST['fileToDelete'];
    $sSelectQuery = "SELECT filePath FROM files WHERE fileId = %d";
    $sSelectQuery = sprintf($sSelectQuery, (int)$iFileId);
    $rResult = $oDatabase->query($sSelectQuery);
    $aFileInfo = $oDatabase->fetch($rResult);

    // Remove file from disk.
    unlink($aFileInfo['pathtoFile']);

    // Remove file from database.
    $sDeleteQuery = "DELETE FROM files WHERE fileId = %d";
    $sDeleteQuery = sprintf($sSelectQuery, $iFileId);
    $oDatabase->query($sDeleteQuery);

    // Done
} 
person Wesley van Opdorp    schedule 21.06.2011
comment
Хорошо, круто - есть ли у вас какие-либо рекомендации относительно того, где я могу найти учебные пособия или руководства по редактированию и удалению файлов с сервера, а также обновлению таблицы sql? Google возвращает массу страниц, которые не соответствуют тому, что я ищу! - person JD2011; 21.06.2011
comment
Спасибо за быстрый ответ - я знаю, что сейчас немного дерзок, но меня шокирует попытка понять это. Совсем не специалист по php - flash и javascript великолепны, но это кодирование выходит за рамки моего набора навыков! - person JD2011; 21.06.2011
comment
Я загружаю изображения с сервера, используя: ‹?php mysql_connect(dbhost, dbuser, dbpass) или die(mysql_error()) ; mysql_select_db(dbname) или die(mysql_error()) ; $data = mysql_query(SELECT * FROM table WHERE Gallery = '1') или die(mysql_error()); while($info = mysql_fetch_array($data)) { Echo ‹img src=images/.$info['photo'] .› ‹br›; Эхо ‹b›Title:‹/b› .$info['title'] . ‹бр› ; } ?› Во-первых, я не могу изменить размер этих изображений с помощью этой функции эха, а затем я предполагаю, что мне нужно будет добавить какой-то переключатель, чтобы перейти к функции удаления? - person JD2011; 21.06.2011

Я лично предпочитаю хранить изображение на HD. Это позволяет легко масштабировать (вы можете перемещать свои образы в NFS или CDN или что-то еще)

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

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

Просто мои 2 цента.

person Sabeen Malik    schedule 21.06.2011