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

相关推荐
大飞记Python1 小时前
Linux命令速查手册(测试开发4年实战总结,附PDF)
linux·网络·pdf
得闲喝茶3 小时前
跨表数据匹配——VLOOKUP、XLOOKUP
大数据·数据库·笔记·信息可视化·数据分析·excel
2501_930707784 小时前
如何在不损失质量的情况下将 PDF 转换为 SVG
pdf
eybk5 小时前
写一个可以编制pdf文件的python程序
开发语言·python·pdf
YFJ_mily5 小时前
**Python 实战:写一个论文 PDF 投稿自检工具|附 IPAT 2026 智能光子学会议征稿信息
人工智能·python·pdf·量子计算·论文投稿·智能光子学
qq_422152575 小时前
PDF内容复用的几种实用方法:转PPT、转图片、转长图
pdf·php·powerpoint
随风一样自由20 小时前
【前端独角兽】刚进入前端领域的前端开发用jQuery还是Vue3?
前端·javascript·vue3·jquery
AI刀刀1 天前
豆包智能体对话导出后,如何构建长期归档与高效检索体系?
android·人工智能·word·excel·ai导出鸭
ZX0X学习中1 天前
一句话让 AI 生成 Excel 多文件合并工具:码道 CLI 实战
人工智能·excel·ai编程·华为云码道
Lucky_Turtle1 天前
【论文写作】PDF图片不清晰,打印生成PDF空白大,PDF字体嵌入
开发语言·pdf·c#