JS结合layui实现文件预览、下载功能

it2024-10-24  37

JS结合layui实现文件预览、下载功能

这俩天做项目,需要做一个下载pdf的功能,但是需要实现客户点击文件先进行预览,然后预览界面得有下载按钮,提供下载。之前已经写过一篇直接下载的文章了,这篇主要记录一下预览功能;

用到的技术 :JS + layui(结合iframe)

一、html代码

<div class="grey-card jus-c ptb30 flex"> <div class="tc mlr50 cupointer" οnclick="getProjectFiles(1,${detail[0]["项目ID"]},'信托合同')"><img src="/res/images/file.png"> <div class="mt5 fs16">信托合同</div> </div> <div class="tc mlr50 cupointer" οnclick="getProjectFiles(2,${detail[0]["项目ID"]},'信托计划说明书')"><img src="/res/images/file.png"> <div class="mt5 fs16">信托计划说明书</div> </div> <div class="tc mlr50 cupointer" οnclick="getProjectFiles(3,${detail[0]["项目ID"]},'认购风险说明书')"><img src="/res/images/file.png"> <div class="mt5 fs16">认购风险说明书</div> </div> <div class="tc mlr50 cupointer" οnclick="getProjectFiles(6,${detail[0]["项目ID"]},'服务协议')"><img src="/res/images/file.png"> <div class="mt5 fs16">服务协议</div> </div> </div>

二、JS代码

//获取文件 function getProjectFiles(type,xmid,title) { var fileParam = { pageNo: 1, pageSize: 10, xmId: xmid, cxlx: type, }; $.ajax({ url: "/prod/getProjectFiles", type: "POST", data: fileParam, dataType: "JSON", success: function (ret) { if (ret && ret['code'] > 0) { //渲染界面 var dataList = ret['list']; //通过layui进行先预览,在下载 showFile(dataList[0]["附件路径"],title,true,false); //这个是之前写的第一种,直接下载pdf文件 // download(dataList[0]["附件名"],dataList[0]["附件路径"]); } } }) } //文件下载 function download(fileName,filePath){ window.open("/downloadTwo?fileName="+encodeURI(fileName)+"&downUrl="+filePath); return ; } //打开新的页面 function openNewWindow1(action) { if (!action) return; var form = $("<form method='get'></form>").attr("id", "toPageForm_" + new Date().getTime()); $("body").append(form); form.attr("action", action).submit(); } //预览下载 function showFile(url, title, isDownload, jump) { if(!title || title === "") title = "文件"; console.log(url); let btnArry = ['已阅']; if(isDownload) { btnArry.push('下载'); } // 是否要跳转到别的页面 if(jump){ openNewWindow1(url); return; } layer.open({ type: 1 ,title: title ,area: ['1000px', '700px'] ,shade: 0.5 ,scrollbar: false ,maxmin: true ,cancel: function(index, layero){ layer.close(index) } ,offset: [ -($(window).height() * 0.02) ,($(window).width() * 0.2) ] ,content: '<iframe src="/res/js/pdfjs/pdfjs-2.4.456-es5-dist/web/viewer.html?file=' + url + '&v=' +new Date().getTime()+ '" style="width: 99%; height: 99%;"></iframe>' ,btn: btnArry ,yes: function(){ layer.closeAll(); } ,btn2: function(){ window.location.href = url; } ,zIndex: layer.zIndex //重点1 ,success: function(layero){ let btn = layero.find('.layui-layer-btn').find('.layui-layer-btn1'); btn.attr({class: 'layui-btn layui-btn-normal', style: 'background-color: #1E9FFF!important;', }); } }); }

三、后端代码 后端代码,这里就不赘述了,和之前的一样。之前的下载:pdf下载

四、需要导的jar包 文件:永久有效 链接:https://pan.baidu.com/s/1vXkyyEU-Rb0PB4Vmo4Rz3w 提取码:64b0 五、页面效果

简单的pdf文件预览、下载就完成了。

最新回复(0)