jquery中pdf的上传、下载及excel导出

jquery中pdf的上传、下载及excel导出

  • [1.PDF上传 pdfUpload](#1.PDF上传 pdfUpload)
  • [2. pdf下载和excel导出用的一种方法,并且需要引入utils.js](#2. pdf下载和excel导出用的一种方法,并且需要引入utils.js)
    • [2.1PDF下载 pdfDownload](#2.1PDF下载 pdfDownload)
    • [2.2导出Excel excelExport](#2.2导出Excel excelExport)

1.PDF上传 pdfUpload

javascript 复制代码
//PDF上传  pdfUpload
window.pdfUpload=function (obj){
   layer.open({
       type: 1,
       title: "PDF上传",
       shade: 0.1,
       area: ['250px', '155px'],
       // btn: ['确认','取消'],
       content:
           `
           <div class="uploadDialog">
                 <button type="button" class="layui-btn demo-class-accept" lay-options="{accept: 'file'}">
                   <i class="layui-icon layui-icon-upload"></i>
                   上传文件
                 </button>
           </div>
           `
       , success: function (layero, index) {
           $(':focus').blur();
           upload.render({
               elem: '.demo-class-accept'
               , url: rootPath + '/xxxxxx'
               , accept: 'file'
               , data: {schedulingId: obj.data.id}
               , exts: 'pdf'
               , done: function (res) {
                   console.log(res,' upload.render--res')
                   if (res) {
                       if (res.code == "200") {
                           layer.msg('上传成功',{time:2000});
                           setTimeout(function (){
                               layer.close(index)
                           },2000)

                       } else {
                           layer.msg(res.msg, {icon: 2, time: 3000});
                       }
                   }
               }
           });
       }
   });
}

2. pdf下载和excel导出用的一种方法,并且需要引入utils.js

javascript 复制代码
<script th:src="@{/static/utils.js}"></script>
javascript 复制代码
// utils.js
const download = (res, type, filename) => {
    // 创建blob对象,解析流数据
    const blob = new Blob([res], {
        // 如何后端没返回下载文件类型,则需要手动设置:type: 'application/pdf;chartset=UTF-8' 表示下载文档为pdf,如果是word则设置为msword,excel为excel
        type: type
    })
    const a = document.createElement('a')
    // 兼容webkix浏览器,处理webkit浏览器中href自动添加blob前缀,默认在浏览器打开而不是下载
    const URL = window.URL || window.webkitURL
    // 根据解析后的blob对象创建URL 对象
    const herf = URL.createObjectURL(blob)
    // 下载链接
    a.href = herf
    // 下载文件名,如果后端没有返回,可以自己写a.download = '文件.pdf'
    a.download = filename
    document.body.appendChild(a)
    a.click()
    document.body.removeChild(a)
    // 在内存中移除URL 对象
    window.URL.revokeObjectURL(herf)
}

2.1PDF下载 pdfDownload

javascript 复制代码
//PDF下载  pdfDownload
window.pdfDownload=function (obj){
   $.ajax({
       url: rootPath + '/xxxx?schedulingId='+obj.data.id,
       type: 'get',
       success: function (res) {
           if (res.code == 200) {
               var pdfUrl = res.data ? (res.data.pdfUrl ? res.data.pdfUrl : null) : null
               if (pdfUrl) {//有返回pdf地址
                   let type=pdfUrl.split('.').pop();
                   let fileExtName = "";

                   if(type=='pdf'){
                       fileExtName=".pdf"
                   }else {
                       layer.msg("请导入的非Excel文件!")
                   }

                   let randfile = new Date().getTime() + fileExtName;

                   var oReq = new XMLHttpRequest();
                   oReq.open("GET", pdfUrl, true,);
                   oReq.responseType = "blob";
                   oReq.onload = function () {
                       var file = new Blob([oReq.response], {
                           type: 'application/pdf'
                       });
                       saveAs(file, randfile);
                   };
                   oReq.send();
               }
               else{
                   layer.msg("请先上传pdf数据!")
               }
           }
       }
   })
}

function saveAs(data, name) {
   var urlObject = window.URL || window.webkitURL || window;
   var export_blob = new Blob([data]);
   var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')
   save_link.href = urlObject.createObjectURL(export_blob);
   save_link.download = name;
   save_link.click();
}

//function getFileName(url)
//{
//   var num = url.lastIndexOf('/')+1
//   var fileName = url.substring(num)
//   //把参数和文件名分割开
//   fileName = decodeURI(fileName.split("?")[0]);
//   return fileName;
//}

2.2导出Excel excelExport

javascript 复制代码
//导出Excel  excelExport
window.excelExport=function (obj){
   $.ajax({
       url: rootPath + '/xxxx?schedulingId='+obj.data.id,
       type: 'get',
       success: function (res) {
           if (res.code == 200) {
               var excelUrl=res.data ? res.data : null
               if (excelUrl) {//有返回pdf地址
                   let type=excelUrl.split('.').pop();
                   let fileExtName = "";
                   let blobType=""
                   if(type==''){//空
                       layer.msg("请导入的非Excel文件!")
                       return false
                   }else if(type=='xls'){
                       fileExtName=".xls"
                       blobType="application/vnd.ms-excel"
                   }else if(type=='xlsx'){
                       fileExtName=".xlsx"
                       blobType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
                   }

                   var randfile = new Date().getTime() + fileExtName;

                   var oReq = new XMLHttpRequest();
                   oReq.open("GET", excelUrl, true,);
                   oReq.responseType = "blob";
                   oReq.onload = function () {
                       var file = new Blob([oReq.response], {
                           type: blobType
                       });
                       // saveAs(file, "excelFile.xls");
                       saveAs(file, randfile);
                   };
                   oReq.send();
               }
               else{
                   layer.msg("请先上传Excel数据!")
               }
           }
       }
   })
}

function saveAs(data, name) {
   var urlObject = window.URL || window.webkitURL || window;
   var export_blob = new Blob([data]);
   var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')
   save_link.href = urlObject.createObjectURL(export_blob);
   save_link.download = name;
   save_link.click();
}

参考:

https://blog.csdn.net/qq_27179087/article/details/129204759

https://blog.csdn.net/weixin_46186815/article/details/131514151?spm=1001.2101.3001.6650.1\&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-131514151-blog-123522384.235^v38^pc_relevant_anti_vip_base\&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-131514151-blog-123522384.235^v38^pc_relevant_anti_vip_base\&utm_relevant_index=2

https://blog.csdn.net/qq_40636998/article/details/107239922?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword\~default-9-107239922-blog-130881581.235^v38^pc_relevant_anti_vip_base\&spm=1001.2101.3001.4242.6\&utm_relevant_index=12

相关推荐
hvinsion2 小时前
Python PDF转换工具箱(PDF转图片,word,拆分,删除,提取)
python·pdf·word
m0_748251522 小时前
vue2前端导出pdf文件
前端·pdf·状态模式
学习溢出3 小时前
【网络安全】John the Ripper 散列密码,PDF密码
安全·网络安全·pdf·哈希算法
觅远5 小时前
python+reportlab创建PDF文件
开发语言·python·pdf
Eiceblue7 小时前
使用Python获取PDF文本和图片的精确位置
开发语言·python·pdf
龙虎榜小红牛系统8 小时前
使用Excel制作通达信自定义“序列数据“
excel·股票·通达信
Py办公羊大侠9 小时前
Excel批量设置行高,Excel表格设置自动换行后打印显示不全,Excel表格设置最合适的行高后打印显示不全,完美解决方案!!!
python·excel·打印·openpyxl·自动换行·显示不全
SixCandy9 小时前
EXCEL使用宏实现筛选重复项并对该行进行填充内容的操作
办公软件·excel··wps
你走以后9 小时前
excel中如何筛选一列中重复的内容,相同的内容只保留一次
excel
热心市民运维小孙1 天前
Ubuntu重命名默认账户
linux·ubuntu·excel