• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

yii2.0整合阿里云oss删除单个文件的方法

php 搞代码 4年前 (2022-01-01) 27次浏览 已收录 0个评论

这篇文章主要介绍了yii2.0整合阿里云oss删除单个文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

主要思路,在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['<strong style="color:transparent">来源gaodai#ma#com搞@代~码网</strong>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;                   // 返回删除结果 } 

以上就是yii2.0整合阿里云oss删除单个文件的方法的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:yii2.0整合阿里云oss删除单个文件的方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址