laravel 删除阿里云oss图片

首先去github下载阿里云的sdk

https://github.com/aliyun/aliyun-oss-php-sdk?spm=a2c4g.11186623.2.5.2bbfc839lk5fQn

示例地址

https://help.aliyun.com/document_detail/32105.html?spm=a2c4g.11186623.6.751.2bbfc839lk5fQn

根据前面的文章,已经在libs下有一个Aliyunoss.php文件了, 在那个基础上增加删除文件

首先判断是否c'za存在

 /**
   * 判断是否存在于oss
   * filename 需要带dir
   */
  public function is_exist_oss($filename) {
    try{
      $ossClient = new OssClient($this->id, $this->key, $this->endpoint);
      $exist = $ossClient->doesObjectExist($this->bucket, $filename);
      if($exist) {
        return true;
      } else {
        return false;
      }
    } catch(OssException $e) {
      return false;
    }
  }

执行删除操作

/**
   * 判断是否存在于oss
   * filename 需要带dir
   */
   public function delete_oss($filename) {
    $has_oss = $this->is_exist_oss($filename);
    if($has_oss) {
      try{
        $ossClient = new OssClient($this->id, $this->key, $this->endpoint);
        $ossClient->deleteObject($this->bucket, $filename);
        return true;
      } catch(OssException $e) {
        return false;
      }
    }
   }

后台接口

public function aliyun_delete(Request $request) {
      $filename = $request->input('filename');
      if(!empty($filename)) {
        $aliyunoss = new Aliyunoss();
        $aliyunoss->delete_oss($filename);
        return json_encode(['msg' => 'success']);
      } else {
        return json_encode(['msg' => 'fail']);
      }
    }

再在upload.js中做删除操作

// 删除
  $('.media-picker').each(function() {
      var el = $(this)
      var inputField = el.find('input[type=hidden]');
      var fileName = inputField.val();
      var elbtn = el.find('.media-picker-button');
      var multi_selection = false;
      // 是否多文件上传
      if(elbtn.attr('data-multiple') == 'multiple') {
        multi_selection = true;
      }
      if(multi_selection) {
        el.on('click', '.delete-image', function() {
          var elDel = $(this);
          // 得到filename
          var currentFileName = elDel.prev('p').html();
          // 删除当前的父级li
          elDel.parent().parent().remove();
          // 重新赋值数组
          var fileNames = new Array();
          if(g_object_names != '') {
            fileNames = g_object_names;
          } else {
            fileNames =  $.parseJSON(fileName);
          }
          // 去掉数组中的当前值
          fileNames.pop(currentFileName);
          $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }, 
          });
          $.ajax({
            type: "POST",
            url: baseBackend + "backend/deleteoss",
            data: "filename=" + currentFileName,
            success: function(msg){
              console.log(msg)
            }
           });
          inputField.val( JSON.stringify(fileNames));
        })


      } else {
        el.on('click', '.delete-image', function() {
          // 显示值为空
          el.find('.medias-list ul').html('');
          inputField.val('');

          // oss删除
          if(g_object_name != '') {
            fileName = g_object_name;
          }
          $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }, 
          });
          $.ajax({
            type: "POST",
            url: baseBackend + "backend/deleteoss",
            data: "filename=" + fileName,
            success: function(msg){
              console.log(msg)
            }
           });
        })
      }
      
  })

猜你喜欢

转载自blog.csdn.net/tang05709/article/details/81979851