Bootstrap上传文件插件fileinput单文件上传、预览以及maxFileCount不生效问题

Bootstrap单文件上传、预览以及maxFileCount不生效问题

本部分主要记录自己在开发过程中遇到的上传单文件的问题。下面开始叙述如何使用Bootstrap的fileinput上传插件。

一、引入Bootstrap上传插件所需的css、js
<link href="../css/fileinput.css" rel="stylesheet"></link>
<script src="../js/fileinput.js" type="text/javascript"></script>
二、Html中input的绑定
<input id="imgFile" name="file" type="file" class="file">
<input id="imgFileVal" name="imgFileVal" type="hidden"/>
三、js显示上传按钮

这里需要注意jquery的引入 fileinput配置项地址

$("#imgFile").fileinput({
    language: 'zh', //设置语言
    uploadUrl: "/common/uploadFile", //上传的地址
    allowedFileExtensions: ['jpg','png'],//接收的文件后缀
    uploadAsync: false, //默认异步上传,这里设置了同步
    showUpload: false, //是否显示上传按钮
    showRemove : true, //显示移除按钮
    showPreview : true, //是否显示预览
    showCaption: false,//是否显示标题
    browseClass: "btn btn-primary", //按钮样式     
    dropZoneEnabled: false,//是否显示拖拽区域
    maxFileCount: 1, //表示允许同时上传的最大文件个数
	autoReplace:true,//是否可替换
    enctype: 'multipart/form-data',
    validateInitialCount:true
	});
四、获取文件提交表单
if ($('#imgFile')[0].files[0]!= null) {
    /*
    FormData对象使用的场景:
    1、把form中所有表单元素的name和value组装成一个queryString
    2、异步上传二进制文件
    */
	var formData = new FormData();//通过FormData将文件转换成二进制数据
	/*
	获取的文件为每次点击上传后的文件,初始化上传组件时要设置autoReplace:true
	避免上传第二张图片时提示上传的文件数2大于最大上传数1,但是文件中图片预览框     展示的是第一张图片,但是上传的文件是提交前最后一次点击上传时上传的文件问题。
	*/
	formData.append('file', $('#imgFile')[0].files[0]);
	$.ajax({
		    url: "/common/uploadFile",
	        type: 'post',
	        cache: false,
	        data: formData1,
	        processData: false,
	        contentType: false,
	        async: false,
	        dataType: "json",
	        success: function(result) {
        	if (result.code==0){
				$('#imgFileVal').val(result.url);
			}else {
				alert(data.response.msg);
			}
               }
	    });
	    }
五、修改时的图片预览
var image=[];
if($('#imgFileVal').val()){
    image=['<img src="'+$('#imgFileVal').val()+'" class="kv-preview-datafile-preview-image">'];
		} 
$("#imgFile").fileinput({
    language: 'zh', //设置语言
    uploadUrl: "/common/uploadFile", //上传的地址
    allowedFileExtensions: ['jpg','png'],//接收的文件后缀
    uploadAsync: false, //默认异步上传,这里设置了同步
    showUpload: false, //是否显示上传按钮
    showRemove : true, //显示移除按钮
    showPreview : true, //是否显示预览
    showCaption: false,//是否显示标题
    browseClass: "btn btn-primary", //按钮样式     
    dropZoneEnabled: false,//是否显示拖拽区域
    maxFileCount: 1, //表示允许同时上传的最大文件个数
	autoReplace:true,//是否可替换
    enctype: 'multipart/form-data',
    validateInitialCount:true,
    initialPreview:image
	});
六、 maxFileCount、允许同时上传的最大文件个数不生效问题
/*
下面上传文件的方式,maxFileCount不生效,每次选择上传的文件后,会立马执行上传
操作,上传成功后上传的图片仍然显示在拖拽框内,再次选择文件后仍然能继续上传文件,上传的文件数也是一个,故拖拽框内显示两张图片,由于不是同时上传所以不会提示
上传的文件数超过了maxFileCount设置的数量,面对这种情况有两种解决方案:
(1)使用上述提交表单时先上传文件的方式进行文件的上传
(2)初始化fileinput时展示上传按钮,点击上传按钮时文件再执行上传操作
*/
$("#imgFile").fileinput({
    language: 'zh', //设置语言
    uploadUrl: "/common/uploadFile", //上传的地址
    allowedFileExtensions: ['jpg','png'],//接收的文件后缀
    uploadAsync: false, //默认异步上传,这里设置了同步
    showUpload: false, //是否显示上传按钮
    showRemove : true, //显示移除按钮
    showPreview : true, //是否显示预览
    showCaption: false,//是否显示标题
    browseClass: "btn btn-primary", //按钮样式     
    dropZoneEnabled: false,//是否显示拖拽区域
    maxFileCount: 1, //表示允许同时上传的最大文件个数
	autoReplace:true,//是否可替换
    enctype: 'multipart/form-data',
    validateInitialCount:true,
    initialPreview:image
	}).on("filebatchselected", function(event, files) {
			$("#imgFile").fileinput("upload");
	}).on("filebatchuploadsuccess", 
	  function (event, data, previewId, index) {   
	  //当点击上传后,进行的操作。
	 //通过 data.response.Json对象属性 获得返回数据
		if (data.response.code==0){
			$('#imgFileVal').val(data.response.url);
		}else {
			alert(data.response.message);
		}
	});
### 回答1: 和大小、格式等功能,你会怎么实现呢? 对于Bootstrap上传文件插件fileinput,我们可以使用前端框架来实现多文件上传预览、删除以及限制最大上传数量和大小、格式等功能。具体实现如下: 1. 在HTML页面中引入fileinput插件的CSS和JS文件。 2. 创建一个input标签,并给它添加class为"file",然后给这个标签添加data属性,用来设置fileinput的一些参数。 3. 在JS文件中,初始化fileinput插件,设置参数,例如设置最大上传数量、大小、格式等,以及预览和删除功能的相关操作。 4. 最后,将fileinput插件渲染到HTML页面中即可。 这样,我们就可以很方便地实现Bootstrap上传文件插件fileinput的多文件上传预览、删除以及限制最大上传数量和大小、格式等功能。 ### 回答2: Bootstrap上传文件插件fileinput可以通过设置参数实现多文件上传预览、删除以及限制最大上传数量。 首先,在使用fileinput插件时,需要设置`showUpload`参数为`true`,以显示上传按钮。 其次,设置`uploadUrl`参数为服务器上的上传文件处理程序的URL,用于实际处理上传文件的操作。 然后,设置`maxFileCount`参数来限制最大上传数量。例如,若需要限制最大上传数量为3,可以设置`maxFileCount`为3。 在HTML代码中,需要添加一个`<input>`标签,设置其`id`属性,并与插件进行绑定。例如,`<input id="myFileinput" type="file" name="file" multiple>`。 接下来,在JavaScript代码中,可以使用`$('#myFileinput').fileinput()`来初始化fileinput插件。 为了实现文件上传预览的功能,可以设置`showPreview`参数为`true`。这将在选择文件时显示文件的缩略图预览。 针对删除文件的功能,可以设置`showRemove`参数为`true`。这将在文件缩略图上显示一个删除按钮,点击该按钮即可删除对应的文件。 通过以上设置和参数,Bootstrap上传文件插件fileinput可以实现多文件上传预览、删除以及限制最大上传数量的功能。 ### 回答3: Bootstrap是一个流行的前端开发框架,其提供了丰富的插件供开发人员使用。其中一个常用的插件fileinput,它可以方便地实现多文件上传预览、删除以及限制最大上传数量的功能。 fileinput插件基于HTML5的File API,可以通过一个简的配置实现多文件上传。首先,我们需要在HTML文件中引入必要的JS和CSS文件,然后使用Bootstrap的表组件来创建一个用于上传文件的表项。 在JS文件中,我们可以使用fileinput的初始化函数来配置插件的参数。通过设置maxFileCount参数,我们可以限制用户一次上传的最大文件数量。另外,通过设置showPreview参数为true,可以让插件在上传过程中实时显示文件的预览图像。 为了实现文件的删除功能,我们可以使用fileinput提供的deleteUrl参数,将上传成功的文件的唯一标识(比如文件名或ID)传递给服务器端进行删除操作。如果不需要预览图像,我们可以将showPreview参数设为false,这样插件将不会显示上传的文件预览图像。 总之,通过使用Bootstrap上传文件插件fileinput,我们可以方便地实现多文件上传预览、删除以及限制最大上传数量的功能。只需简的配置,就可以满足用户的需求。同时,插件提供了良好的交互和视觉效果,使文件上传操作更加友好和便捷。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值