1. 程式人生 > >laravel 刪除阿里雲oss圖片

laravel 刪除阿里雲oss圖片

首先去github下載阿里雲的sdk

示例地址

根據前面的文章,已經在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)
            }
           });
        })
      }
      
  })