# jquery fileinput圖片上傳 :::success :bookmark: 書籤 [TOC] ::: # github | 標題 | 網址 | | --- | --- |--- | |fileinput github|https://github.com/kartik-v/bootstrap-fileinput| --- # 基本引入 ## 效果圖 ![](https://i.imgur.com/IFTEyKR.png) ## CSS Link ``` html <link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/fileinput/fileinput.css"> <link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/fileinput/fileinput.min.css"> ``` ## Javascript ``` html <script src="<?php echo base_url(); ?>assets/js/fileinput/fileinput.js"></script> <script src="<?php echo base_url(); ?>assets/js/fileinput/fileinput.min.js"></script> ``` # 基本佈置 ## CSS設定 ``` css [title=縮放] , [title=全屏] , [title=無邊界模式] , [title=關閉當前預覽]{ background-color: #146faf; border-color: #fff; border-radius: 3px; } [title=縮放]:hover , [title=全屏]:hover , [title=無邊界模式]:hover , [title=關閉當前預覽]:hover{ background-color: #2b7db7; border-color: #f2f2f2; border-radius: 3px; } [title=縮放]:active , [title=全屏]:active , [title=無邊界模式]:active , [title=關閉當前預覽]:active{ background-color: #2b7db7; border-color: #f2f2f2; border-radius: 3px; } ``` ## 基本上傳按鈕 ``` html <input type="file" lass="file input-lg" id="setFile" name="setFile[]" value="發布" multiple> ``` ## fileinput參數設定說明 ``` html $("#setFile").fileinput("upload");//上傳圖片 $("#setFile").fileinput({ language: "zh-TW",/* 設定語言 */ uploadAsync: false,/* 上傳同步true/非同步false */ uploadUrl: "<?php echo base_url(); ?>accident/setFile",/* 請求上傳方法路徑 */ /* showXXX就是顯是哪種按鈕 zoom=放大縮小 close=關閉 upload=上傳 */ showZoom: false, showClose: false, showUpload: false, fileActionSettings: {/* 是否在預覽圖上面顯示什麼按鈕 */ showUpload: false, showDrag: false }, maxFileCount: 5,/* 最大上傳檔案個數 */ removeClass: "btn btn-warning",/* 移除按鈕樣式 */ maxFileSize: 20480,/* 最大上傳檔案容量大小(KB) */ dropZoneEnabled: false,/* 是否啟用將檔案拖放到的拖放區 */ previewSettings: {/* 上傳檔案模板大小 */ image: {width: "160px", height: "120px"}, html: {width: "160px", height: "120px"}, text: {width: "160px", height: "120px"}, video: {width: "160px", height: "120px"}, audio: {width: "160px", height: "120px"}, flash: {width: "160px", height: "120px"}, object: {width: "160px", height: "120px"}, pdf: {width: "160px", height: "120px"}, other: {width: "160px", height: "120px"} }, allowedFileExtensions: allow_type,/* 接收的副檔名格式 ex ['jpg', 'gif', 'png'] */ allowedPreviewTypes : null, allowedPreviewMimeTypes:["image/bmp","image/jpeg","image/png","image/gif","application/pdf","text/plain","text/csv"], previewFileIconSettings: { "doc": "<i class='fa fa-file-word-o text-success'></i>", "xls": "<i class='fa fa-file-excel-o text-info'></i>", "ppt": "<i class='fa fa-file-powerpoint-o text-danger'></i>", "zip": "<i class='fa fa-file-archive-o'></i>" }, previewFileExtSettings: { "doc": function(ext) { return ext.match(/(doc|docx)$/i); }, "xls": function(ext) { return ext.match(/(xls|xlsx)$/i); }, "ppt": function(ext) { return ext.match(/(ppt|pptx)$/i); }, "zip": function(ext) { return ext.match(/(zip|rar|tar|gzip|gz|7z)$/i); } } }).on("filebatchuploadsuccess", function(event, data, previewId, index) {/* 上傳成功後回調函式 */ /* 動作敘述 */ }).on("change", function(event) {/* 當有檔案上傳時 */ var file_ch = $("#setFile")[0].files; for (var i = 0 ; i < file_ch.length ; i++) { var file_type = /[^.]+$/.exec(file_ch[i].name)[0]; if(file_ch[i].size > 20971520 || allow_type.indexOf(file_type) == -1){ /* 動作敘述 */ } } }).on("filecleared", function(event) {/* 清空文件後做的動作 */ /* 動作敘述 */ }); ``` ## CI3上傳範例 ``` php /** * [批次上傳附件] * @return [type] [description] */ function setFile(){ if (empty($_FILES["setFile"])) {/* 如果空就回傳找不到檔案 */ echo json_encode(["error" => "找不到檔案"]); return; } else { for($i = 0; $i < count($_FILES["setFile"]["name"]); $i++){ $_FILES["tempFile"]["name"] = $_SESSION["username"]."_".preg_replace("/[\-\[\]\/\{\}:;#%=\(\)\*\+\?\\\\^\$\|<>&\"\' ]/", "_" , $_FILES["setFile"]["name"][$i]); $_FILES["tempFile"]["type"] = $_FILES["setFile"]["type"][$i]; $_FILES["tempFile"]["tmp_name"] = $_FILES["setFile"]["tmp_name"][$i]; $_FILES["tempFile"]["error"] = $_FILES["setFile"]["error"][$i]; $_FILES["tempFile"]["size"] = $_FILES["setFile"]["size"][$i]; $config["file_name"] = iconv(mb_detect_encoding($_FILES["tempFile"]["name"]), "UTF-8//Ignore", $_FILES["tempFile"]["name"]);/* 設定編碼 */ $config["max_size"] = 20480;/* 上傳檔案大小限制 */ $config["detect_mime"] = true; $config["upload_path"] = "./uploads/";/* 上傳路徑 */ $config["allowed_types"] = "bmp|jpg|png|gif|pdf|txt|csv|doc|docx|xls|xlsx|ppt|pptx|zip|rar|tar|gzip|gz|7z";/* 限制上傳格式 */ $this->load->library("upload", $config);/* CI3檔案上傳lib */ $this->upload->initialize($config); if($this->upload->do_upload("tempFile")){/* 檔案上傳 */ $output = []; $type = ""; switch ($_FILES["tempFile"]["type"]) { case (preg_match("/^image/",$_FILES["tempFile"]["type"]) ? true : false): $type = "image"; break; case "application/pdf": $type = "pdf"; break; case (preg_match("/^text/",$_FILES["tempFile"]["type"]) ? true : false): $type = "text"; break; default: $type = "object"; break; } /* 上傳資料庫動作 * @param [file_name] [type] */ } else { $output = ["error" => "處理上傳失敗 ".$this->upload->display_errors()]; } } echo json_encode($output); } } ```