
uniapp导出excel(后端生成,前端下载打开)
发布日期:2021-05-08 03:40:33
浏览次数:76
分类:精选文章
本文共 4043 字,大约阅读时间需要 13 分钟。
解决方案:前后端资源路径配置优化
在前后端协同开发中,资源路径的配置是关键,尤其是在打包成jar包后运行时,路径的处理需要特别注意。以下是针对当前问题的详细解决方案:
一、前端代码优化
在前端代码中,文件下载逻辑需要动态获取正确的文件路径,以适应不同的运行环境。以下是优化后的代码:
exportExcel(e) { // 访问后端接口生成Excel文件 uni.request({ url: getApp().globalData.url + "/dhTask/exportExcelByProTaskId", data: { proTaskId: this.production_task_id }, method: "POST", header: { 'content-type': 'application/x-www-form-urlencoded', 'Authorization': uni.getStorageSync("token") }, success: (res) => { if (res.data.code === 200) { if (res.data.data === 1) { // 动态获取正确的文件路径 const urlPrefix = getApp().globalData.url; const filePath = `${urlPrefix}/excel/${this.production_task_id}.xls`; // 使用 uni.downloadFile 获取文件 uni.downloadFile({ url: filePath, success: (res) => { const tempFilePath = res.tempFilePath; uni.saveFile({ tempFilePath, success: (res) => { const savedFilePath = res.savedFilePath; // 打开Excel文件 uni.openDocument({ filePath: savedFilePath, success: (res) => { console.log('成功打开文档'); this.getajax4("/dhTask/deleteExcel", { production_task_id: this.production_task_id }, 'post', function(a, b) { // 处理删除操作 }); } }); }, fail: () => { console.log('下载失败'); } }); } }); } } }, error: () => { uni.showToast({ title: "操作失败1!", icon: "none" }); return 0; } });}
二、后端代码优化
在后端代码中,优化静态资源映射路径配置,确保在不同环境下都能正确映射到资源文件:
@Configurationpublic class CrossDomainConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowCredentials(true) .allowedOrigins("*") .allowedMethods("GET", "POST", "OPTIONS") .maxAge(3600); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { String path = ""; if (XmlUtils.class.getResource("").toString().contains("jar:")) { String projectPath = System.getProperty("user.dir"); path = new File(projectPath + "/classes/static/asserts/img/excel/").getPath() + "\\"; } else { path = XmlUtils.class.getResource("/static/asserts/img/excel/").getPath().replace("file:", "").replace("/", File.separator); } registry.addResourceHandler("/excel/**") .addResourceLocations("file:" + path); WebMvcConfigurer.super.addResourceHandlers(registry); }}
三、关键问题分析
资源路径统一:前后端必须对资源路径有统一的理解,尤其是在打包成jar包后,资源路径可能会发生变化。
动态路径获取:在前端代码中,不能直接使用固定路径,而是应根据实际环境获取正确的路径。使用 getApp().globalData.url
可以获取到当前环境下的路径。
后端资源服务:在后端,使用 ResourceHandlerRegistry
统一配置资源路径,确保前后端能够正确地加载静态资源。
四、测试验证
运行环境测试:
- 在 idea 中运行,确保能够正常下载并打开 Excel 文件。
- 打包成 jar 后,部署到服务器,测试前端是否能正确获取 Excel 文件。
调试日志:
- 在前端和后端分别打印日志,确认在不同环境下,获取到的路径是否一致。
- 检查后端生成 Excel 文件的路径是否正确,确保文件存在。
错误处理:
- 在打包成 jar 后,检查是否有路径转换错误,确保前端能够正确访问后端服务提供的文件路径。
五、优化效果
通过上述优化,前后端的资源路径配置更加统一,能够在不同环境下正常运行。前端代码动态获取路径,避免了固定路径带来的问题;后端代码通过统一配置,确保资源能够被正确访问和处理。
六、注意事项
- 路径转换:确保在不同操作系统下路径转换正确,避免因路径问题导致的文件访问失败。
- 缓存问题:在前后端交互时,检查是否存在缓存导致的路径问题,必要时清理缓存或重新加载资源。
- 权限控制:确保前端有权限访问后端的资源路径,避免跨域或权限问题导致文件下载失败。
通过以上优化,可以有效解决前后端资源路径配置的问题,确保在不同环境下都能正常运行。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月11日 19时40分04秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
微信小程序setData子元素
2019-03-06
缓冲区溢出实例(一)--Windows
2019-03-06
缓冲区溢出实例(一)–Windows
2019-03-06
Badboy录制脚本时,提示脚本错误的解决方法
2019-03-06
PHP一句话木马小总结与SQL语句写一句话木马
2019-03-06
堆与堆排序
2019-03-06
关于计数排序
2019-03-06
Python中字符串前添加r ,b, u, f前缀的含义
2019-03-06
zookeeper安装部署步骤
2019-03-06
Hadoop学习笔记—Yarn
2019-03-06
__format__
2019-03-06
B-概率论-条件概率
2019-03-06
191123
2019-03-06
spring 整合 ActiveMQ
2019-03-06
JSONPath小试牛刀之Snack3
2019-03-06
Solon Ioc 的注解对比Spring及JSR330
2019-03-06
Java基础:HashMap中putAll方法的疑惑
2019-03-06
[转] C++中的namespace
2019-03-06
Jenkins - 部署在Tomcat容器里的Jenkins,提示“反向代理设置有误”
2019-03-06