更新或删除记录时如何从数据库和文件夹位置永久删除图像
How to delete an image permanently from the database and folder location when a record is updated or deleted
我有问题。我的记录有一个图像选项,但是当我更新我的记录或删除记录时,它只会影响数据库表并且图像文件仍位于文件夹位置。我已经阅读了 php 的取消链接功能,但不知道如何在我的案例中使用它。
这是我用于更新和删除操作的代码 http://pastebin.com/KQZyAuA0,如果有人知道答案,请与我分享。
您可以将 $model->save() 中的代码更改为此,因此在您重定向之前检查目录中是否存在旧图像,并删除它们。
$oldThumb = Yii::getPathOfAlias('media') . '/album/optimized/' . $model_old_data->photo;
$oldOptimized = Yii::getPathOfAlias('media') . '/album/optimized/' . $model_old_data->photo;
if ($model->save()) {
if (file_exists($oldThumb)) {
unlink($oldThumb);
}
if (file_exists($oldOptimized)) {
unlink($oldOptimized);
}
$this->redirect(array('view', 'id' => $model->id));
}
必须将删除操作更改为,
public function actionDelete($id)
{
if (Yii::app()->request->isPostRequest) {
// we only allow deletion via POST request
$model_old_data = $this->loadModel($id);
$oldThumb = Yii::getPathOfAlias('media') . '/album/optimized/' . $model_old_data->photo;
$oldOptimized = Yii::getPathOfAlias('media') . '/album/optimized/' . $model_old_data->photo;
$model = $this->loadModel($id);
if ($model->delete()) {
if (file_exists($oldThumb)) {
unlink($oldThumb);
}
if (file_exists($oldOptimized)) {
unlink($oldOptimized);
}
}
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if (!isset($_GET['ajax'])) {
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}
} else {
throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
}
}
我有问题。我的记录有一个图像选项,但是当我更新我的记录或删除记录时,它只会影响数据库表并且图像文件仍位于文件夹位置。我已经阅读了 php 的取消链接功能,但不知道如何在我的案例中使用它。 这是我用于更新和删除操作的代码 http://pastebin.com/KQZyAuA0,如果有人知道答案,请与我分享。
您可以将 $model->save() 中的代码更改为此,因此在您重定向之前检查目录中是否存在旧图像,并删除它们。
$oldThumb = Yii::getPathOfAlias('media') . '/album/optimized/' . $model_old_data->photo;
$oldOptimized = Yii::getPathOfAlias('media') . '/album/optimized/' . $model_old_data->photo;
if ($model->save()) {
if (file_exists($oldThumb)) {
unlink($oldThumb);
}
if (file_exists($oldOptimized)) {
unlink($oldOptimized);
}
$this->redirect(array('view', 'id' => $model->id));
}
必须将删除操作更改为,
public function actionDelete($id)
{
if (Yii::app()->request->isPostRequest) {
// we only allow deletion via POST request
$model_old_data = $this->loadModel($id);
$oldThumb = Yii::getPathOfAlias('media') . '/album/optimized/' . $model_old_data->photo;
$oldOptimized = Yii::getPathOfAlias('media') . '/album/optimized/' . $model_old_data->photo;
$model = $this->loadModel($id);
if ($model->delete()) {
if (file_exists($oldThumb)) {
unlink($oldThumb);
}
if (file_exists($oldOptimized)) {
unlink($oldOptimized);
}
}
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if (!isset($_GET['ajax'])) {
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}
} else {
throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
}
}