从服务器中删除图像

时间:2016-07-08 06:18:32

标签: php yii2

我正在尝试使用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;

    }

1 个答案:

答案 0 :(得分:1)

最好为上传路径设置别名(最佳位置为config/bootstrap.php),以便我们可以为所有上传文件夹设置标准名称。即

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

您可以使用相同的方法保存和删除文件。

保存就像

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

您可以使用Yii Methods,例如

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

删除将类似于:

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

核心思想是使用真实路径来删除和保存而不是URL

相关问题