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,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',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",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',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方法