我正在尝试使用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 :(得分: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