| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 | <?php/** * 文件上传 * User: Mike * Email: m@9026.com * Date: 2016/6/21 * Time: 11:45 */namespace App\Widget\Tools;class FileUpload {    /**     * 单个文件上传     * @param $folder     * @param string $position     * @param array $option     */    public function single($folder, $id, $name = "data[file]", $file = "", $option = [], $param = [])    {        $file_types = 'jpg|jpeg|gif|png|bmp|doc|docx|xls|xlsx|ppt|htm|html|php|txt|zip|rar|gz|bz2|crt|key|txt|pem';        $option['position'] = isset($option['position']) ? $option['position'] : "alioss";        $option['placeholder'] = isset($option['placeholder']) ? $option['placeholder'] : "";        $option['button_class'] = isset($option['button_class']) ? $option['button_class'] : "";        //扩展参数        $extParam = '';        if($param){            foreach($param AS $key => $val){                $extParam .= $key . ":" . $val . ',';            }        }        $token = csrf_token();        $html = <<<EOF         <link href="/base/plugins/webuploader/webuploader.css" rel="stylesheet">                        <script src="/base/js/plugins/webuploader/webuploader.min.js"></script>            <div class="WebUploader">                <div class="WebUploader_button">                    <div class="input-group">                        <input type="text" class="form-control input-uploadfile" value="{$file}" name="{$name}" placeholder="{$option['placeholder']}" readonly>                        <div class="input-group-btn">                            <div id="{$id}" class="btn-xs {$option['button_class']}">上传文件</div>                        </div>                    </div>                </div>            </div>            <script type="text/javascript">                function webUpload{$id}() {                    var uploaderthis="#{$id}";                    var uploader = WebUploader.create({                        auto: true,                        pick: {                            id: uploaderthis,                            multiple: false,                        },                        accept: {                            title: 'Files',                            extensions: "{$file_types}",                            mimeTypes:'*/*'                        },                        swf: "/base/plugins/webuploader/uploader.swf",                        server: "/admin/Base/Attachment/fileupload?folder=$folder",                        fileNumLimit: 300,                        fileSizeLimit: 20 * 1024 * 1024,                        fileSingleSizeLimit: 10 * 1024 * 1024,                    });                    uploader.option("formData", {                        $extParam                        _time: Math.random(),                        _token : "{$token}",                        _position : "{$option['position']}",                        elementid : "",                        file_type : "file",                        folder : "{$folder}"                    });                    uploader.on("error",function(type){                        if(type=='F_EXCEED_SIZE'){                            layer.msg("上传的文件不大于10MB", {icon: 2});                            return false;                        }else if(type=="Q_TYPE_DENIED"){                            layer.msg("请上传格式正确的文件", {icon: 2});                            return false;                        }else {                            layer.msg("服务器繁忙请稍候再试", {icon: 2});                            return false;                        }                    });                    uploader.on("uploadProgress",function(file,percentage){                        var re = /([0-9]+\.[0-9]{2})[0-9]*/;                        aNew = parseFloat(percentage*100).toFixed(0);                        $(uploaderthis).parent().parent().find(".webuploader-pick").html(aNew+"%");                        if(percentage==1){                            $(uploaderthis).parent().parent().find(".webuploader-pick").html('保存中...');                        }                    });                    uploader.on('uploadSuccess', function( file, response ) {                        uploader.removeFile( file );                        if(response.code == 200){                            $(uploaderthis).parent().parent().find(".input-uploadfile").val(response.fileurl);                            $(uploaderthis).parent().parent().find(".webuploader-pick").html('上传完成');                        }else{                            layer.msg(response.message, {icon: 2});                            $(uploaderthis).parent().parent().find(".webuploader-pick").html('上传失败');                        }                    });                }                webUpload{$id}();            </script>EOF;        return $html;    }    public function single2($folder, $id, $name="data", $file="", $option=[]){        $folder = urlencode($folder);        $imgHtml =  "";        $option['callback'] = isset($option['callback']) ? $option['callback'] : "";        if(!$option['callback'] && !empty($file)) {            // $imgHtml .=  " <li><em class=\"close\" onclick='$(this).parent().remove()'>×</em>            //         <a href='{$file}' class='cc_file' target='_blank'> <img src=\"/base/plugins/imguploader/img/file.jpg\" alt=\"{$file}\"></a>            //         <p class=\"rate\" style=\"display: none;\"><span style=\"width: 100%;\"></span></p>            //         <p class=\"yes\" style=\"display: none;\"></p>            //         <p class=\"no\"></p>            //         <input type=\"hidden\" name=\"{$name}\" value=\"{$file}\">            //     </li>";            $iconImage = in_array(fileExt($img['url']), ['jpg', 'png' , 'gif' , 'jpeg' , 'bmp']) ? " <div class='image'><img src=\"{$img['url']}\" alt= /></div>" : "<div class='icon'><i class='fa fa-file'></i></div>";            $imgHtml .="<li >                    <div class=\"file\">                        <span class=\"corner\"></span>                        {$iconImage}                        <div class=\"file-name\">                            <p>{$img['alt']}</p>                            <small></small>                        </div>                    </div>                    <em class=\"close\" onclick=\"$(this).parent().remove()\" >×</em>                    <input type=\"hidden\" name=\"{$name}[alt][]\" value=\"{$img['alt']}\">                    <input type=\"hidden\" name=\"{$name}[url][]\" value=\"{$img['url']}\">                    </li>";        }        $html = <<<EOF           <script type="text/javascript" src="/base/plugins/imguploader/uploader.js"></script>            <div class="layout_upload">                <ul class="ullit">                    $imgHtml                    <li>                        <a class="layout_upload_but" id="$id"> </a>                    </li>                    <div class="ov_h"></div>                </ul>            </div>            <script type="text/javascript">            /*             UploaderPick:"#",                       //绑定按钮id             UploaderUrl:"",                         //百度插件地址             UploaderServer:"",                      //上传api             UploaderMax:1                           //现在最大上传个数             UploadHiddenField:""                    //隐藏域name             */            new uploadFile({                UploaderPick:"#$id",                UploaderMax:0,                UploadHiddenField:"$name",                UploaderServer:"/api/attachment/webupload?elementid=&folder=$folder&_time=" + Math.random(),                UploaderSingle:true            });        </script>EOF;        return $html;    }    public function multi2($folder, $id, $name="data[image]", $files=[], $option=[]){        $folder = urlencode($folder);        $imgHtml =  "";        $option['callback'] = isset($option['callback']) ? $option['callback'] : "";        $option['max'] = isset($option['max']) ? $option['max'] : 200;        $option['max'] = $option['max']-count($files);        if(!$option['callback'] && !empty($files)) {            foreach($files as $key=>$val) {                if(is_string($val)) {                    $file['url'] = $val;                    $file['alt'] = '';                }else{                    $file = $val;                }                /*$imgHtml .=  " <li><em class=\"close\" onclick='$(this).parent().remove()'>×</em>                        <a href='{$file['url']}' title='{$file['alt']}' target='_blank'> <img src=\"/base/plugins/imguploader/img/file.jpg\" alt=\"{$file['alt']}\"></a>                        <p class=\"rate\" style=\"display: none;\"><span style=\"width: 100%;\"></span></p>                        <p class=\"yes\" style=\"display: none;\"></p>                        <p class=\"no\"></p>                        <input type=\"hidden\" name=\"{$name}[alt][]\" value=\"{$file['alt']}\">                        <input type=\"hidden\" name=\"{$name}[url][]\" value=\"{$file['url']}\">                    </li>";*/                $iconImage = in_array(fileExt($file['url']), ['jpg', 'png' , 'gif' , 'jpeg' , 'bmp']) ? " <div class='image'><img src=\"{$file['url']}\" alt= /></div>" : "<div class='icon'><i class='fa fa-file'></i></div>";                $imgHtml .="<li >                        <div class=\"file\">                            <span class=\"corner\"></span>                            {$iconImage}                            <div class=\"file-name\">                                <p>{$file['alt']}</p>                                <small></small>                            </div>                        </div>                        <em class=\"close\" onclick=\"$(this).parent().remove()\" >×</em>                        <input type=\"hidden\" name=\"{$name}[alt][]\" value=\"{$file['alt']}\">                        <input type=\"hidden\" name=\"{$name}[url][]\" value=\"{$file['url']}\">                        </li>";            }        }        $html = <<<EOF           <script type="text/javascript" src="/base/plugins/imguploader/uploader.js"></script>            <div class="layout_upload">                <ul class="ullit">                                    $imgHtml                    <li>                        <a class="layout_upload_but" id="$id"> </a>                    </li>                    <div class="ov_h"></div>                </ul>            </div>            <script type="text/javascript">            /*             UploaderPick:"#",                       //绑定按钮id             UploaderUrl:"",                         //百度插件地址             UploaderServer:"",                      //上传api             UploaderMax:5                           //现在最大上传个数             UploadHiddenField:""                    //隐藏域name             */            new uploadFile({                UploaderPick:"#$id",                UploaderMax:{$option['max']},                UploaderServer:"/api/attachment/webupload?elementid=&folder=$folder&_time=" + Math.random(),                UploadHiddenField:"$name"            });        </script>EOF;        return $html;    }}
 |