欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

yii2.0整合阿里云oss刪除單個(gè)文件的方法

 更新時(shí)間:2017年09月19日 10:18:58   作者:weinirumo  
這篇文章主要介紹了yii2.0整合阿里云oss刪除單個(gè)文件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

主要思路,在controller里邊通過獲得要?jiǎng)h除的文件fileid,把fileid傳遞給model的deletefile方法進(jìn)行處理,并返回處理結(jié)果。
在deletefile方法里邊,先根據(jù)id找到對(duì)應(yīng)的文件信息,然后刪除數(shù)據(jù)里邊的記錄和阿里云oss里邊的文件和本地的文件。

主要步驟如下:

1 首先是構(gòu)建一個(gè)view視圖,或者寫一個(gè)ajax發(fā)送請(qǐng)求,此處代碼略(讓前端去寫吧)。

2 在控制器里邊接收參數(shù),并轉(zhuǎn)交給model??刂破鱑ploadController.php里邊的代碼參考如下:

/**
   * 根據(jù)fileid刪除文件
   * @return mixed 刪除是否成功
   */
  public function actionDeletefile()
  {
    $res['error'] = 1;     // 準(zhǔn)備返回?cái)?shù)據(jù)
    Yii::$app->response->format = Response::FORMAT_JSON;  // 設(shè)置返回格式
    if (Yii::$app->request->isPost){            // 如果是post請(qǐng)求
      $postdata = Yii::$app->request->post('fileid',0);  // 從post里邊獲取文件id

      if ($postdata==0){                 // 如果文件id為0
        $res['errmsg'] = '刪除失敗,請(qǐng)重試';        // 準(zhǔn)備返回?cái)?shù)據(jù)
        return $res;                  // 返回結(jié)果
      }
      $model = new UploadForm();             // 實(shí)例化model
      $delres = $model->deletefile($postdata);      // 根據(jù)id調(diào)用deletefile方法

      if ($delres['error']==0){              // 如果刪除成功
        $res['error'] = 0;               // 準(zhǔn)備返回信息
      } else {
        $res['errmsg'] = $delres['errmsg'];       // 如果刪除失敗,準(zhǔn)備返回信息
      }

    } else {
      $res['errmsg'] = '非法請(qǐng)求';             // 主要考慮post請(qǐng)求,get請(qǐng)求請(qǐng)自行修改代碼
    }

    return $res;                      // 返回刪除結(jié)果
  }

3 當(dāng)controller把文件id轉(zhuǎn)移給UploadForm.php以后,在deletefile方法里邊進(jìn)行刪除。

   /**
   * 刪除阿里云oss里存儲(chǔ)的文件和數(shù)據(jù)庫(kù)里邊保存到文件上傳信息
   * @param $fileid  文件表里邊的主鍵id
   * @return boolean  刪除是否成功
   */
  public function deletefile($fileid)
  {
    $res['error'] = 1;  // 1表示默認(rèn)有錯(cuò)誤。
    $fileinfo = Yii::$app->db->createCommand('select ossfile,filePath,userid from file where id=:id')->bindParam(':id', $fileid)->queryOne();
    // 根據(jù)主鍵從數(shù)據(jù)庫(kù)里邊查詢文件的信息,至少要一個(gè)服務(wù)器文件的完整路徑(用來刪除服務(wù)器文件)和一個(gè)ossfile的名稱(刪除阿里云oss里邊的文件)

    if (count($fileinfo) > 0) {           // 如果找到了文件的記錄

      // 這里邊的驗(yàn)證可以更豐富一些,比如驗(yàn)證用戶是否有權(quán)限刪除該文件,文件是否屬于該用戶等等

      $ossfile = $fileinfo['ossfile'];      // 獲取ossfile
      $realfile = $fileinfo['filePath'];     // 獲取服務(wù)器上的文件
      $owner = $fileinfo['userid'];        // 獲取上傳圖片用戶的id
      $operator = Yii::$app->user->id;      // 獲取刪除圖片的用戶

      if ($owner != $operator) {         // 如果刪除圖片的用戶不是上傳的用戶,報(bào)錯(cuò)并返回
        $res['errmsg'] = '您刪除的圖片不存在';
        return $res;
      }

      $trans = Yii::$app->db->beginTransaction(); // 開啟事務(wù)
      try {
        $delstatus = Yii::$app->db->createCommand()->delete('file', 'id = ' . $fileid)->execute();
        //刪除數(shù)據(jù)庫(kù)里邊的記錄

        if ($delstatus) {            // 如果刪除成功
          if (Yii::$app->Aliyunoss->delete($ossfile)) { //刪除阿里云oss上的文件
            @unlink($realfile);       // 刪除服務(wù)器上的文件
            $res['error'] = 0;       // 準(zhǔn)備返回信息
            $trans->commit();        // 提交事務(wù)
          }
        }
        $trans->rollBack();           // 刪除失敗,事務(wù)回滾
      } catch (Exception $e) {          // 發(fā)生異常
        $res['errmsg'] = '刪除失敗';       // 準(zhǔn)備返回信息
        $trans->rollBack();           // 事務(wù)回滾
      }

    } else {
      $res['errmsg'] = '圖片不存在,請(qǐng)重試';      // 圖片不存在
    }

    return $res;                   // 返回刪除結(jié)果
  }

阿里云oss文件的上傳和刪除已經(jīng)寫完了。當(dāng)初自己也是遇到了很多問題,發(fā)現(xiàn)從網(wǎng)上找,竟然找不到理想的參考代碼。所以才寫了這幾篇文章。希望對(duì)大家的開發(fā)有所幫助。畢竟水平有限,如果遇到考慮不周或者代碼有誤的地方,請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • php去除HTML標(biāo)簽實(shí)例

    php去除HTML標(biāo)簽實(shí)例

    在php中要去除字符串中的HTML標(biāo)簽方法有很多種,最常用的就是使用strip_tags函數(shù)一并去了,只保留字符了,還在就是有選擇性的去除了這里要用正則表達(dá)式了,下面寫二個(gè)php去除HTML標(biāo)簽的小例子
    2013-11-11
  • PHP如何實(shí)現(xiàn)跨域

    PHP如何實(shí)現(xiàn)跨域

    這篇文章主要介紹了PHP如何實(shí)現(xiàn)跨域的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-05-05
  • ThinkPHP3.1新特性之查詢條件預(yù)處理簡(jiǎn)介

    ThinkPHP3.1新特性之查詢條件預(yù)處理簡(jiǎn)介

    相比于ThinkPHP3.0版本對(duì)數(shù)組方式的查詢條件會(huì)進(jìn)行安全過濾而不支持字符串條件的安全過濾的情況,ThinkPHP3.1版本則增加了對(duì)條件字符串進(jìn)行預(yù)處理的支持,讓ORM的安全性更加得以保證。這篇文章主要介紹了ThinkPHP3.1的查詢條件預(yù)處理,需要的朋友可以參考下
    2014-06-06
  • Yii框架實(shí)現(xiàn)圖片上傳的方法詳解

    Yii框架實(shí)現(xiàn)圖片上傳的方法詳解

    這篇文章主要介紹了Yii框架實(shí)現(xiàn)圖片上傳的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Yii框架實(shí)現(xiàn)圖片上傳功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • 阿里云PHP SMS短信服務(wù)驗(yàn)證碼發(fā)送方法

    阿里云PHP SMS短信服務(wù)驗(yàn)證碼發(fā)送方法

    這篇文章主要介紹了阿里云PHP SMS短信服務(wù)驗(yàn)證碼發(fā)送方法,需要的朋友可以參考下
    2017-07-07
  • php中的雙引號(hào)與單引號(hào)的基本使用及區(qū)別

    php中的雙引號(hào)與單引號(hào)的基本使用及區(qū)別

    字符串是一個(gè)非常要的知識(shí),在開發(fā)中,有的使用單引號(hào),有的使用雙引號(hào),這個(gè)是有區(qū)別的,這篇文章主要介紹了php中的雙引號(hào)與單引號(hào)的基本使用,需要的朋友可以參考下
    2023-06-06
  • php簡(jiǎn)單實(shí)現(xiàn)MVC

    php簡(jiǎn)單實(shí)現(xiàn)MVC

    文章簡(jiǎn)單介紹了MVC的概念,php中的MVC,使用MVC的原因,以及如何簡(jiǎn)單是先MVC,非常詳細(xì),這里推薦給大家。
    2015-02-02
  • 修改ThinkPHP緩存為Memcache的方法

    修改ThinkPHP緩存為Memcache的方法

    這篇文章主要介紹了修改ThinkPHP緩存為Memcache的方法,需要的朋友可以參考下
    2014-06-06
  • 3款值得推薦的微信開發(fā)開源框架

    3款值得推薦的微信開發(fā)開源框架

    下面向大家介紹的是微信開發(fā)項(xiàng)目里使用的3款基于PHP的開發(fā)框架,相信一定對(duì)你的開發(fā)工作有所幫助。
    2014-10-10
  • 用php+ajax新建流程(請(qǐng)假、進(jìn)貨、出貨等)

    用php+ajax新建流程(請(qǐng)假、進(jìn)貨、出貨等)

    這篇文章主要介紹了用php+ajax新建流程(請(qǐng)假、進(jìn)貨、出貨等),需要的朋友可以參考下
    2017-06-06

最新評(píng)論