2016-07-08 3 views
0

Я пытаюсь удалить изображения с сервера с помощью функции unlink(). Это удаление имени изображения из базы данных, но изображение не удаляется с сервера, что я делаю неправильно?Удаление изображения с сервера

public function actionDelete() 
    { 
     if(Yii::$app->request->isAjax) 
     { 

      $id = $_POST['id']; 
      $product=Product::find()->where(['id'=>$id])->one()->delete(); 
      $delete=CategoryProduct::find()->where(['product_id'=>$id])->all(); 
      foreach($delete as $del) 
      { 
       $del->delete(); 
      } 

      $imgfile="<?php echo Yii::$app->request->baseUrl;?>/web/assets/uploads/<?php echo $product->image;?>"; 
      unlink($imgfile); 

      echo json_encode(TRUE);die; 
     } 

     echo json_encode(FALSE);die; 

    } 
+0

Используйте Filepath не URL, я смотрю на '$ app-> request-> baseUrl' будет возвращать http: //path/path/path/img.html, но вы должны использовать путь к файлу, который похож на etc/ww/images/path/direcory/file.png – tomexsans

+0

проверьте это http://stackoverflow.com/questions/10499450/delete-image-files-from-server, я думаю, это может помочь вам – zoro

+0

use 'Yii :: getAlias ​​('webroot')' для пути к файлу – GAMITG

ответ

1

Его лучше установить псевдоним пути загрузки (лучшее место будет), так что мы можем иметь стандартное название для всей папки загрузки. i.e

Yii::setAlias('image_uploads', dirname(dirname(__DIR__)) . '/web/assets/uploads'); 

Вы можете использовать этот файл для сохранения и удаления файла.

Saving будет как

move_uploaded_file($tmp_file, \Yii::getAlias('@image_uploads/products/') . $product->image); 

или

Вы можете использовать Yii Методы для т.е., например,

$this->imageFile->saveAs($orignal_file_full_path); // where imageFile in input type file 

Стирание будет что-то вроде:

unlink (\Yii::getAlias('@image_uploads/products/') . $product->image); 

Основная идея заключается в использовании реальных путей для удаления и сохранения, а затем URL-

Смежные вопросы