yii2.0整合阿里云oss删除单个文件的方法
发布时间 - 2026-01-11 03:18:58 点击率:次主要思路,在controller里边通过获得要删除的文件fileid,把fileid传递给model的deletefile方法进行处理,并返回处理结果。
在deletefile方法里边,先根据id找到对应的文件信息,然后删除数据里边的记录和阿里云oss里边的文件和本地的文件。

主要步骤如下:
1 首先是构建一个view视图,或者写一个ajax发送请求,此处代码略(让前端去写吧)。
2 在控制器里边接收参数,并转交给model。控制器UploadController.php里边的代码参考如下:
/**
* 根据fileid删除文件
* @return mixed 删除是否成功
*/
public function actionDeletefile()
{
$res['error'] = 1; // 准备返回数据
Yii::$app->response->format = Response::FORMAT_JSON; // 设置返回格式
if (Yii::$app->request->isPost){ // 如果是post请求
$postdata = Yii::$app->request->post('fileid',0); // 从post里边获取文件id
if ($postdata==0){ // 如果文件id为0
$res['errmsg'] = '删除失败,请重试'; // 准备返回数据
return $res; // 返回结果
}
$model = new UploadForm(); // 实例化model
$delres = $model->deletefile($postdata); // 根据id调用deletefile方法
if ($delres['error']==0){ // 如果删除成功
$res['error'] = 0; // 准备返回信息
} else {
$res['errmsg'] = $delres['errmsg']; // 如果删除失败,准备返回信息
}
} else {
$res['errmsg'] = '非法请求'; // 主要考虑post请求,get请求请自行修改代码
}
return $res; // 返回删除结果
}
3 当controller把文件id转移给UploadForm.php以后,在deletefile方法里边进行删除。
/**
* 删除阿里云oss里存储的文件和数据库里边保存到文件上传信息
* @param $fileid 文件表里边的主键id
* @return boolean 删除是否成功
*/
public function deletefile($fileid)
{
$res['error'] = 1; // 1表示默认有错误。
$fileinfo = Yii::$app->db->createCommand('select ossfile,filePath,userid from file where id=:id')->bindParam(':id', $fileid)->queryOne();
// 根据主键从数据库里边查询文件的信息,至少要一个服务器文件的完整路径(用来删除服务器文件)和一个ossfile的名称(删除阿里云oss里边的文件)
if (count($fileinfo) > 0) { // 如果找到了文件的记录
// 这里边的验证可以更丰富一些,比如验证用户是否有权限删除该文件,文件是否属于该用户等等
$ossfile = $fileinfo['ossfile']; // 获取ossfile
$realfile = $fileinfo['filePath']; // 获取服务器上的文件
$owner = $fileinfo['userid']; // 获取上传图片用户的id
$operator = Yii::$app->user->id; // 获取删除图片的用户
if ($owner != $operator) { // 如果删除图片的用户不是上传的用户,报错并返回
$res['errmsg'] = '您删除的图片不存在';
return $res;
}
$trans = Yii::$app->db->beginTransaction(); // 开启事务
try {
$delstatus = Yii::$app->db->createCommand()->delete('file', 'id = ' . $fileid)->execute();
//删除数据库里边的记录
if ($delstatus) { // 如果删除成功
if (Yii::$app->Aliyunoss->delete($ossfile)) { //删除阿里云oss上的文件
@unlink($realfile); // 删除服务器上的文件
$res['error'] = 0; // 准备返回信息
$trans->commit(); // 提交事务
}
}
$trans->rollBack(); // 删除失败,事务回滚
} catch (Exception $e) { // 发生异常
$res['errmsg'] = '删除失败'; // 准备返回信息
$trans->rollBack(); // 事务回滚
}
} else {
$res['errmsg'] = '图片不存在,请重试'; // 图片不存在
}
return $res; // 返回删除结果
}
阿里云oss文件的上传和删除已经写完了。当初自己也是遇到了很多问题,发现从网上找,竟然找不到理想的参考代码。所以才写了这几篇文章。希望对大家的开发有所帮助。毕竟水平有限,如果遇到考虑不周或者代码有误的地方,请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# yii2
# oss
# yii
# 删除
# 删除文件
# yii2.0整合阿里云oss上传单个文件的示例
# yii2.0整合阿里云oss的示例代码
# Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
# 不存在
# 主键
# 器上
# 上传
# 在此
# 找不到
# 请重试
# 写了
# 报错
# 该用户
# 该文件
# 小编
# 给我留言
# 上传图片
# 感谢大家
# 有错误
# 几篇
# 文件上传
# 构建一个
# 找到了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在七牛云存储上搭建网站并设置自定义域名?
高端建站三要素:定制模板、企业官网与响应式设计优化
iOS中将个别页面强制横屏其他页面竖屏
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Android仿QQ列表左滑删除操作
Laravel如何使用Eloquent进行子查询
如何快速完成中国万网建站详细流程?
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Laravel如何实现文件上传和存储?(本地与S3配置)
Laravel如何实现多对多模型关联?(Eloquent教程)
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
html如何与html链接_实现多个HTML页面互相链接【互相】
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
西安专业网站制作公司有哪些,陕西省建行官方网站?
Python数据仓库与ETL构建实战_Airflow调度流程详解
如何用美橙互联一键搭建多站合一网站?
JavaScript实现Fly Bird小游戏
HTML 中动态设置元素 name 属性的正确语法详解
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Laravel中的withCount方法怎么高效统计关联模型数量
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何在 Pandas 中基于一列条件计算另一列的分组均值
如何为不同团队 ID 动态生成多个独立按钮
Laravel如何配置任务调度?(Cron Job示例)
nodejs redis 发布订阅机制封装实现方法及实例代码
QQ浏览器网页版登录入口 个人中心在线进入
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
如何快速搭建高效WAP手机网站吸引移动用户?
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
如何在阿里云域名上完成建站全流程?
Laravel如何创建自定义Artisan命令?(代码示例)
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
Python制作简易注册登录系统
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
如何在服务器上配置二级域名建站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
如何在阿里云虚拟服务器快速搭建网站?

