分享一個圖片上傳插件(TP5.0)


效果預覽圖:


該插件主要功能是:可預覽裁剪圖片和保存原圖片,執行裁剪圖片后會刪除 裁剪的原圖片目錄,以便減少空間。

一、下載附件

地址:https://pan.baidu.com/s/1bpxZhM3

二、將附件中的CropAvatar.php放到自己程序目錄extend/org目錄下,如果遇到 exif_imagetype 錯誤,需要打開 php.ini 中的 extension=php_exif.dll

 

三、common.php公共函數

找到應用程序目錄下的common.php文件,在里面添加公用函數:

/**
 * 轉換字節
 * @param $bytes 傳入字節數值
 * @param int $decimals
 * @return string BKMGTP
 */
function human_filesize($bytes, $decimals = 2) {
    $sz = 'BKMGTP';
    $factor = floor((strlen($bytes) - 1) / 3);
    return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor];
}

/**
 * 刪除該目錄以及該目錄下面的所有文件和文件夾
 * @param $dir 目錄
 * @return bool
 */
function removeDir($dirName) {
    //判斷傳入參數是否目錄,如不是執行刪除文件
    if (!is_dir($dirName)) {
        //刪除文件
        @unlink($dirName);
    }
    //如果傳入是目錄,使用@opendir將該目錄打開,將返回的句柄賦值給$handle
    $handle = @opendir($dirName);
    //這里明確地測試返回值是否全等於(值和類型都相同)FALSE
    //否則任何目錄項的名稱求值為 FALSE 的都會導致循環停止(例如一個目錄名為“0”)
    while (($file = @readdir($handle)) !== false) {
        //在文件結構中,都會包含形如“.”和“..”的向上結構
        //但是它們不是文件或者文件夾
        if ($file != '.' && $file != '..') {
            //當前文件$dir為文件目錄+文件
            $dir = $dirName . '/' .$file;
            //判斷$dir是否為目錄,如果是目錄則遞歸調用reMoveDir($dirName)函數
            //將其中的文件和目錄都刪除;如果不是目錄,則刪除該文件
            is_dir($dir) ? removeDir($dir) : @unlink($dir);
        }
    }
    closedir($handle);
    return rmdir($dirName);
}

修改配置文件

找到應用程序目錄下的配置文件config.php,在配置里面添加:

//上傳配置 根目錄前需添加 一個 .
    'syc_images'   => [
        //縮圖保存位置
        'thumb' => './uploads/thumbs',
        //附件圖片保存位置
        'image' => './uploads/images',
        //裁剪的原始圖片保存位置
        'original' => './uploads/original',
        //上傳限制 2*1024*1024
        'size'  => 2097152,
    ],
 
五、將 file-thumd-modal.html文件放到view文件夾里面,作為一個模板文件,如:
 

六、控制器,附件中的Thumbs.php文件是一個示例控制器,可以將該控制器拿到你的程序目錄下,修改下命名空間、方法名等,該控制器里面有個方法為:index(),該方法是上傳文件調用的方法,如果想要顯示一個選擇文件的頁面還需自己寫個操作方法,如:test()。

public function test() {
        return $this->fetch();
    }
public function index() {
    .....
}

七、視圖層,在view文件夾里定義一個與test方法相關的模板文件,該頁面的<body>標簽里面需要加上class="page-header-fixed",因為JS里面需要使用到。<a class="btn red btn-outline sbold avatar-view"> 選擇圖片</a>這個標簽用來打開模態框,class為avatar-view,{include file="public/file-thumd-modal"}用來引入file-thumd-modal.html文件,需要找到該模板文件寫地址

<!DOCTYPE html>
//id="art-thumb" 返回的圖片地址
//id="preview" 返回的 img 小圖
//該頁面需引入bootstrap的js,css和jquery等文件
<head> <script src="__STATIC__/dist/js/jquery-1.11.2.min.js"></script> <script src="__STATIC__/dist/js/bootstrap.min.js"></script> <link rel="stylesheet" href="__STATIC__/dist/css/bootstrap.min.css" type="text/css" /> </head> <body class="page-header-fixed"> <img src="./public/uploads/thumbs/20170925/20170925135203666.png" /> <div class="form-group"> <label class="control-label col-md-2">濃縮圖片</label> <div class="col-md-3"><input type="text" name="art_thumb" id="art-thumb" class="form-control"></div> <div class="col-md-2"> {// 調用 avatar-view} <a class="btn red btn-outline sbold avatar-view"> 選擇圖片</a> </div> <div class="col-md-3"><div id="preview"></div></div> </div> {// file-thumd-modal.html 可以引用到其他頁面要用到的地方} {// 引入上傳圖片modal} {include file="public/file-thumd-modal"} <script language="javascript" type="text/javascript"> $(function () { var $imgDiv = $('.avatar-wrapper'); $imgDiv.find('img').cropper({aspectRatio:NaN}); //設置自由裁剪, NaN 為自由裁剪,此為覆蓋默認 1:1比例裁剪框 }) </script> </body>

做好這些步驟,我們就可以使用該插件了,其它的一些像:圖片存放位置,圖片返回路徑等等,可以子在相應的文件里面進行修改即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM