Удаление файлов изображений с сервера

Интересно, может ли кто-нибудь помочь мне.

Я собрал эту страницу, которая позволяет пользователям просматривать их загруженные изображения в формате галереи.

Теперь я хочу добавить функциональность удаления к каждому изображению. Я создал кнопку и Javascript позади нее, но я действительно не уверен, как связать «щелчок на кнопке» с фактическим физическим удалением файла.

Изображения не сохраняются в базе данных, но находятся в двух папках на моем сервере, в следующей структуре:

UploadedFiles/username/locationid/imagename и

UploadedFiles/username/locationid/Thumbnails/imagename

Я относительно новичок в PHP, и теперь я дохожу до пределов своих знаний, но, конечно, хочу учиться. Из документации, которую я прочитал, я думаю, что я прав, говоря, что метод unlink – это правильная команда для использования?

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

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

Большое спасибо и добрые пожелания

Solutions Collecting From Web of "Удаление файлов изображений с сервера"

Если вы можете передать переменные username, locationid и imagename в свой скрипт, вы можете удалить файлы с помощью функции unlink() :

 $path = 'UploadedFiles/' . $username . '/' . $locationid . '/'; unlink( $path . $imagename ); unlink( $path . 'Thumbnails/' . $imagename ); 

Поскольку вы взаимодействуете с вашей файловой системой, вам нужно быть уверенным и дезинфицировать переменные (запретите кому-то использовать ../../../, чтобы попасть в нежелательные части вашей файловой системы).

 $username = str_replace( array( '..', '/', '\\', ':' ), '', $username ); $imagename = str_replace( array( '..', '/', '\\', ':' ), '', $imagename ); $locationid= str_replace( array( '..', '/', '\\', ':' ), '', $locationid ); 

Очевидно, что ваш javascript (клиентская сторона) должен будет вызывать URL-адрес (на стороне сервера), чтобы удалить изображение, выбранное пользователем. Я предлагаю, что на данный момент вы делаете это статически (если позже вы хотите перейти к чему-то более динамичному, шаг превратиться в ajax в довольно малом размере.

Так как Set Sail Media сказал, вам нужно будет передать имя пользователя и идентификатор местоположения на ваш сервер при нажатии кнопки удаления. Один из способов сделать это:

При рендеринге вашей галереи в HTML / javascript для каждого изображения у вас есть под ним то, которое будет содержать необходимую информацию, а кнопка отправки просто вызовет скрипт удаления с вашего сервера. Пример формы, которую вы можете сделать, это:

  <form name="deleteImageX" method="GET" target="your.server.org/deleteImage.php"> <input type="hidden" name="userName" value="theUserNameAssociatedWithThePicture" /> <input type="hidden" name="locationId" value="locationOfThePicture" /> <input type="submit" value="delete"/> </form> 

Эта форма сохранит необходимое значение в скрытых полях, которые не будут отображаться на веб-странице, но все равно будут отправляться на сервер при нажатии кнопки отправки.

(для небольшой истории метод, используемый здесь, – это GET, потому что HTML AFAIK не поддерживает метод DELETE (который был бы подходящим в нашем случае)).

Метод GET вызовет скрипт «your.server.org/deleteImage.php». В этом скрипте у вас будет вся необходимая информация (имя пользователя / locationId), чтобы удалить изображение с помощью переменных $ _GET ['username'] и $ _GET ['locationId']. Затем, как вы упомянули, вам нужно будет использовать метод unlink для фактического удаления файла с сервера.

Наконец, как только это будет сделано, вам нужно перенаправить скрипт php, чтобы после удаления изображения вы снова отобразили галерею (например). Это можно сделать, вызвав скрипт, если у вас есть какой-то механизм шаблонов, или вызвав функцию «header» php.

Я надеюсь, что этот поток был тем, что вы ожидали, и я надеюсь, что я был полезным.

С уважением,

медведь