插件下載地址:
https://github.com/kartik-v/bootstrap-fileinput/
官方DEMO查看:
http://plugins.krajee.com/file-basic-usage-demo
JQ上傳插件匯總:http://www.jq22.com/jquery-plugins%E4%B8%8A%E4%BC%A0-1-jq
圖片預覽上傳插件bootstrap-fileinput.js
http://www.jq22.com/jquery-info15397

引入css
<link href="css/bootstrap.min.css" rel="stylesheet"> <link href="css/bootstrap-fileinput.css" rel="stylesheet">
引入js
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<
script
src
=
"js/bootstrap-fileinput.js"
></
script
>
<
script
type
=
"text/javascript"
>
$(function() {
//比較簡潔,細節可自行完善
$('#uploadSubmit').click(function() {
var data = new FormData($('#uploadForm')[0]);
$.ajax({
url: 'xxx/xxx',
type: 'POST',
data: data,
async: false,
cache: false,
contentType: false,
processData: false,
success: function(data) {
console.log(data);
if (data.status) {
console.log('upload success');
} else {
console.log(data.message);
}
},
error: function(data) {
console.log(data.status);
}
});
});
})
</
script
>
|
由於工作需要使用Bootstrap的FileInput插件,在此分享下插件的使用方法
直接上代碼
fileinput.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="css/bootstrap.min.css" />
<link rel="stylesheet" href="css/fileinput.css" />
</head>
<body>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/fileinput.js" ></script>
<script type="text/javascript" src="js/fileinput_locale_zh.js" ></script>
<label class="control-label">Select File</label>
<input id="input-2" name="input2" type="file" class="file-loading">
<script type="text/javascript">
var ctrlName = 'input-2';
var control = $('#' + ctrlName);
control.fileinput({
uploadUrl:'http://localhost:8080/upload.php',
showCaption: false,
showCancel:false,
showUploadedThumbs:false,
showClose:false,
autoReplace:true,
maxFileCount:1,
overwriteInitial:true,
showUploadedThumbs:false,
language:'zh',
initialPreview:"<img src='/back_t.jpg' class='file-preview-image' />",
initialPreviewCount:1,
initialPreviewShowDelete:false,
layoutTemplates:{
actions: '<div class="file-actions">\n' +
' <div class="file-footer-buttons">\n' +
' </div>\n' +
' <div class="file-upload-indicator" tabindex="-1" title="{indicatorTitle}">{indicator}</div>\n' +
' <div class="clearfix"></div>\n' +
'</div>'
}
}).on('fileuploaded', function(event, data, previewId, index){ console.log(data.response.message); });
</script>
</body>
</html>
uploadFile.php
<?php
if ($_FILES['input2']["type"] == "image/png") {
echo "{\"code\":0, \"message\":\"upload success!\"}";
} else {
echo "{\"code\":-1, \"error\":\"Invalid file format\"}";
}
?>
使用截圖

上傳成功

php 應用 bootstrap-fileinput 上傳文件 插件 操作的方法
//先加載插件所需要的 js 、css 文件
- <link href="css/fileinput.css" rel="stylesheet" type="text/css" />
- <script src="js/fileinput.js"type="text/javascript"></script>
- <script src="js/fileinput_locale_zh.js" type="text/javascript"></script>
- <input type="file" class="file"id="img_url1" name="image_data[]"accept="image/*" multiple>
- $("#img_url1").fileinput({
- language: 'zh',
- uploadUrl: "upload", //上傳后台操作的方法
- uploadAsync: false, //設置上傳同步異步 此為同步
- maxFileSize: 200,
- allowedFileExtensions: ['jpg'] //限制上傳文件后綴
- });//初始化 后 上傳插件的樣子
php中方法
- public function upload(){
- if(IS_AJAX)
- {
- $images_name = '';
- $img_name = time();
- foreach($_FILES['image_data']['tmp_name'] as$k=>$v)
- {
- move_uploaded_file($v,$img_path.$img_name.$k.'.jpg');
- $images_name .= $img_name.$k.'.jpg'.',';
- }
- }
- return 1; //這個返回值必須要
- }
了解更多 請參考 http://plugins.krajee.com/file-input/demo#image-management
bootstrap-fileinput的使用
bootstrap-fileinput是基於bootstrap的上傳控件,此控件網上有很多例子。我照着例子做后發現請求無法提交到后台,反復測試后發現,不能禁止預覽(showPreview要設置為true),禁止預覽后fileuploaded則無法響應(實際情況是showPreview=false時, 即便是uploadAsync=true, 也是filebatchuploadsuccess響應返回結果。如果showPreview=true, uploadAsync=true, 才是fileuploaded響應返回結果)。
注意如果出現$("#xxxx").fileinput({}); 不生效的情況請將fileinput.js中最后幾行注釋掉:
/* $(document).ready(function () {
var $input = $('input.file[type=file]'), count = $input.attr('type') ? $input.length : 0;
if (count > 0) {
$input.fileinput();
}
}); */
<link rel="stylesheet" href="css/bootstrapCSS/bootstrap.min.css"> <link rel="stylesheet" href="css/bootstrapCSS/bootstrap-theme.min.css"> <link rel="stylesheet" href="css/bootstrapCSS/fileinput.css" /> <div> <input type="file" name="uploadfile" id="uploadfile" multiple class="file-loading" /> </div> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="js/bootstrap/fileinput.js"></script> <script type="text/javascript" src="js/bootstrap/fileinput_locale_zh.js"></script> <script type="text/javascript" src="js/bootstrap/bootstrap.min.js"></script> <script type="text/javascript"> $("#uploadfile").fileinput({ language: 'zh', //設置語言 uploadUrl: "http://127.0.0.1/testDemo/fileupload/upload.do", //上傳的地址 allowedFileExtensions: ['jpg', 'gif', 'png'],//接收的文件后綴 //uploadExtraData:{"id": 1, "fileName":'123.mp3'}, uploadAsync: true, //默認異步上傳 showUpload: true, //是否顯示上傳按鈕 showRemove : true, //顯示移除按鈕 showPreview : true, //是否顯示預覽 showCaption: false,//是否顯示標題 browseClass: "btn btn-primary", //按鈕樣式 dropZoneEnabled: false,//是否顯示拖拽區域 //minImageWidth: 50, //圖片的最小寬度 //minImageHeight: 50,//圖片的最小高度 //maxImageWidth: 1000,//圖片的最大寬度 //maxImageHeight: 1000,//圖片的最大高度 //maxFileSize: 0,//單位為kb,如果為0表示不限制文件大小 //minFileCount: 0, maxFileCount: 10, //表示允許同時上傳的最大文件個數 enctype: 'multipart/form-data', validateInitialCount:true, previewFileIcon: "<i class='glyphicon glyphicon-king'></i>", msgFilesTooMany: "選擇上傳的文件數量({n}) 超過允許的最大數值{m}!", }); //異步上傳返回結果處理 $('#uploadfile').on('fileerror', function(event, data, msg) { console.log(data.id); console.log(data.index); console.log(data.file); console.log(data.reader); console.log(data.files); // get message alert(msg); }); //異步上傳返回結果處理 $("#uploadfile").on("fileuploaded", function (event, data, previewId, index) { console.log(data.id); console.log(data.index); console.log(data.file); console.log(data.reader); console.log(data.files); var obj = data.response; alert(JSON.stringify(data.success)); }); //同步上傳錯誤處理 $('#uploadfile').on('filebatchuploaderror', function(event, data, msg) { console.log(data.id); console.log(data.index); console.log(data.file); console.log(data.reader); console.log(data.files); // get message alert(msg); }); //同步上傳返回結果處理 $("#uploadfile").on("filebatchuploadsuccess", function (event, data, previewId, index) { console.log(data.id); console.log(data.index); console.log(data.file); console.log(data.reader); console.log(data.files); var obj = data.response; alert(JSON.stringify(data.success)); }); //上傳前 $('#uploadfile').on('filepreupload', function(event, data, previewId, index) { var form = data.form, files = data.files, extra = data.extra, response = data.response, reader = data.reader; console.log('File pre upload triggered'); }); </script>
經查資料得知,異步上傳處理錯誤和返回結果要處理fileerror和fileuploaded方法;同步上傳處理錯誤和返回結果filebatchuploaderror和filebatchuploadsuccess方法

