bootstrap-fileinput 多文件上传,显示,编辑回显,再次新增图片同时显示

这篇博客详细介绍了如何在前端实现文件上传页面,支持图片、视频和PDF的预览,同时提供删除功能。通过FileVO类定义文件信息,JS代码展示了如何构建初始预览配置,以及处理文件上传、删除和移除的事件。使用了Krajee的文件输入插件,提供了不同类型的文件配置示例。
摘要由CSDN通过智能技术生成

实现效果,支持回显示 图片,视频,pdf

该页面是编辑回显的页面, 里面元素包括 图片,大小,名称,下载的按钮

文件删除功能

给前端的文件的信息类:

public class FileVO {
    //文件主键
	Integer id;
	//文件名称
	String name;
	//文件url
	String url;
	//文件大小
	String size;
    //缩率图  
	String thumbnailPic;
	//类型
	String type;
	 
}

删除图片文件删除的java代码就不提供了.就是传一个id,根据id删除,比较简单 

下面的js代码

<script th:inline="javascript">
        var prefix = ctx + "maintenance/instructions"
  

       var picList = [[${picList}]];
       var modeId = [[${modeId}]];
         
        var initialPreview = [] ;
        var initialPreviewConfig = [] ;
        for (var i = 0; i < picList.length; i++) {
            var fileName =  picList[i] ;
            if (fileName != null && fileName !=''){
                var delImg = new Object() ;
                delImg = generFilDel( fileName);
                
                initialPreview.push(fileName.url) ;
                initialPreviewConfig.push(delImg) ;
            }
        }
 
        function generFilDel(file) {
 
			if(file.type=='pdf'){
				return 	{type: "pdf", size: file.size, caption: file.name, url:prefix + "/deletePic", key: file.id, downloadUrl:file.url};
			}else if(file.type=='text'){
				return {caption: file.name, type: "text", size: file.size, url:prefix + "/deletePic", key: file.id , downloadUrl:file.url};
			}else if(file.type=='mp4'){
				return  {type: "video", size: file.size, filetype: "video/mp4", caption: file.name, url:prefix + "/deletePic", key: file.id , downloadUrl:file.url};
			}else{
				return	{caption: file.name, size: file.size, url: prefix + "/deletePic", key: file.id};
			}
        }
        
        $(".file-upload").fileinput({
            uploadUrl: prefix + '/upload',
            maxFileCount: 5,
            autoReplace: true,
            showClose: false, //隐藏右上角叉
            showRemove: false, //隐藏清除按钮
            uploadExtraData: { modeId:modeId },
        	initialPreview: initialPreview,
         	initialPreviewConfig: initialPreviewConfig,
			initialPreviewAsData: true, // defaults markup
            fileSizeGetter:true,
            overwriteInitial:false
        
         }).on('fileuploaded', function (event, data, previewId, index) {
        	 // 文件上传完成
            picList.push({'key':data.response.data.id,'url':data.response.data.url});
        	 
        }).on('filesuccessremove', function (event, data, previewId, index) {
        	// 上传完成后, 移除成功通知
			for (var i = 0; i < picList.length; i++) { 
			      if (picList[i].name== data) { 
 			          delete picList[i]; 
			      } 
			   }                 	
         }).on('fileremoved', function (event, data, previewId, index) {
        	 
         })
         
         
         
    </script>

更多详细的,跳转官方文档上去看看  详细介绍方式说明: initialPreviewConfig 

https://plugins.krajee.com/file-input/plugin-options?#initialPreviewConfigicon-default.png?t=N7T8https://plugins.krajee.com/file-input/plugin-options?#initialPreviewConfig官方的示例:

initialPreview: [
    // IMAGE DATA
   'http://lorempixel.com/800/460/business/1',
    // IMAGE RAW MARKUP
    '<img src="http://lorempixel.com/800/460/business/2" class="kv-preview-data file-preview-image" style="height:160px">',
    // TEXT DATA
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ut mauris ut libero fermentum feugiat eu et dui. Mauris condimentum rhoncus enim, sed semper neque vestibulum id. Nulla semper, turpis ut consequat imperdiet, enim turpis aliquet orci, eget venenatis elit sapien non ante. Aliquam neque ipsum, rhoncus id ipsum et, volutpat tincidunt augue. Maecenas dolor libero, gravida nec est at, commodo tempor massa. Sed id feugiat massa. Pellentesque at est eu ante aliquam viverra ac sed est.",
    // PDF DATA
    'https://kartik-v.github.io/bootstrap-fileinput-samples/samples/pdf-sample.pdf',
    // VIDEO DATA
    "https://kartik-v.github.io/bootstrap-fileinput-samples/samples/small.mp4",
],
initialPreviewAsData: true, // defaults markup
initialPreviewConfig: [
    {caption: "Business 1.jpg", size: 762980, url: "$urlD", key: 11},
    {previewAsData: false, size: 823782, caption: "Business 2.jpg", url: "$urlD", key: 13},
    {caption: "Lorem Ipsum.txt", type: "text", size: 1430, url: "$urlD", key: 12},
    {type: "pdf", size: 8000, caption: "PDF Sample.pdf", url: "$urlD", key: 14},
    {type: "video", size: 375000, filetype: "video/mp4", caption: "Krajee Sample.mp4", url: "$urlD", key: 15},
],

对于使用bootstrap-fileinput插件进行分片上传,你需要确保使用的是5.0版本或更高版本的插件,因为分片上传功能是在5.0版本中新增的。分片上传适用于需要上传大文件但又无法放开包大小限制的情况。你可以通过开启分片上传来实现这一功能。\[1\] 另外,需要注意的是,虽然bootstrap-fileinput插件可以用于已经上传到服务器端的文件的回显,但并不是对回显操作的最佳解决方案。对于回显操作,最好不要使用bootstrap-fileinput插件。然而,作为bootstrap-fileinput插件的基本功能之一,你可以在示例中通过该插件实现文件的回显,包括图片文件。\[2\] 如果你想使用bootstrap-fileinput插件,你需要在页面中引入相应的脚本文件,例如: <script type="text/javascript" src="~/bootstrap-fileinput/themes/fas/theme.js"></script> 这样可以确保插件的功能正常运行。\[3\] #### 引用[.reference_title] - *1* [bootstrap-fileinput分片上传](https://blog.csdn.net/puss0/article/details/124080911)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [第51章 Bootstrap-Fileinput深入理解](https://blog.csdn.net/zhoujian_911/article/details/125425153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值