以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [杰哥的BS技术分享]解决e.writeBook和e.WriteReportAsPDF无法在JQuery、Vue、Uniapp体系里触发下载的方案,完美实现[异步生成+异步发送],彻底杜绝文件重复写入导致磁盘Stream IO冲突 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=176125) |
-- 作者:chen37280600 -- 发布时间:2022/3/31 17:48:00 -- [杰哥的BS技术分享]解决e.writeBook和e.WriteReportAsPDF无法在JQuery、Vue、Uniapp体系里触发下载的方案,完美实现[异步生成+异步发送],彻底杜绝文件重复写入导致磁盘Stream IO冲突 (快速浏览杰哥分享过的所有经验汇总,点击跳转)1存在问题在狐表weui教程里,直接通过Http请求,e.writeBook和e.WriteReportAsPDF都是可以顺利生成excel文件下载,或者是生成pdf下载
但是在F12控制台里,能看到狐表已经做出回复,能收到服务器端发过来的数据
这种模式有2个问题: 1生成Excel或者专业报表的PDF时,是主线程同步的,多人用的时候,会出现性能问题。 2你稍微不注意,可能会并发同时生成同名同目录文件,导致文件重复写入占用,磁盘IO写入报错。严重的还会让程序一直在写入,把cpu飙升到100%占用(我最近遇到了) 狐表高开文档原文:“
所以最好的方案:还是用e.writeBook和e.WriteReportAsPDF,实现【异步生成+异步发送】 2问题分析 其实不是狐表有bug,而是你没理解e.writeBook和e.WriteReportAsPDF是通过什么机制,实现了“异步生成+异步发送” 实际上,这2个方法,都是把文件,直接生成为Blob二进制格式的文件流,直接发送给浏览器,浏览器已经成功接收了,见下图 那浏览器没能触发下载,是前端代码的问题,并不是狐表的问题。需要改动一些js代码。 3解决方法3.1狐表后端代码HttpRequest事件代码:(非常简单,跟帮助文档一样,保持不变) Sel ect Case e.path Case "emp.xls" \'下载为文件 Dim Book As New XLS.Book(ProjectPath & "Attachments\\资料卡.xls") book.AddDataTable("员工","数据源名称","Sel ect * from {员工} where 姓名 = \'王伟\'") e.WriteBook(book,"emp.xls",False) End Sele ct 3.2JQuery和Vue体系的改动 以下内容只有回复后才可以浏览 成功效果: ===================================================================== 杰哥免费分享的web系统 =============================================================== 顺便总结以前分享过的帖子,方便大家学习 联系QQ:2385350359 经验分享: [此贴子已经被作者于2022/7/12 8:22:36编辑过]
|
-- 作者:ap9709130 -- 发布时间:2022/3/31 17:58:00 -- 学习啊 高手 |
-- 作者:aix -- 发布时间:2022/3/31 18:33:00 -- 学习 |
-- 作者:fivetable -- 发布时间:2022/3/31 18:54:00 -- 内容太高级了,无法理解 |
-- 作者:lgzhao -- 发布时间:2022/3/31 19:00:00 -- 杰哥出品 必属精品 |
-- 作者:laipiwen -- 发布时间:2022/3/31 20:32:00 -- 谢谢分享 |
-- 作者:jyh7081 -- 发布时间:2022/4/1 9:00:00 -- 谢谢! |
-- 作者:Phoebe菲比 -- 发布时间:2022/4/1 9:25:00 -- 支持杰哥!! |
-- 作者:happyft -- 发布时间:2022/4/1 9:38:00 -- 学习 |
-- 作者:teng0731 -- 发布时间:2022/4/1 10:20:00 -- 谢谢! |