位置: 编程技术 - 正文

Node.js实现兼容IE789的文件上传进度条(nodejs edge)

编辑:rootadmin

推荐整理分享Node.js实现兼容IE789的文件上传进度条(nodejs edge),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js server-side,node.js运行js,node.js支持win7,node.js server-side,nodejs只支持http,node.js支持win7,node.js web,node.js支持win7,内容如对您有帮助,希望把文章链接给更多的朋友!

Nodejs对文件上传的处理

在Express4里req.files已经是undefined了;现在用的最多的可能就是formidable了,你知道了它有个progress事件,于是心中大喜,低版本IE的进度条有戏了;OK,试一下:

是的,你很高兴的看到了,控制台按照预期打印了一串进度值;那么,再进一步;

call方法即在页面上显示进度值;很不幸,你只能看到最后的%,看不到上传具体详细的进度值;再探...

接下来换个思路,试一下,将进度值保存到session里,额外加一个请求来轮询这个进度值,哎哟,不错哦!为了保证你请求的进度值是你这次上传的进度值而不是其他上传的进度值,需要在上传的请求里和额外的请求里约定一个token值;现在又来一个问题就是怎么在请求的时候得到这个token,由于文件上传的请求体在Request Payload里,所以req.body拿不到带过去的值,我也不想去解析这堆了,当然我也解析不了;放在url里最好,问题在于有时候得刷新两次来刷新token,不好!不得已,我还是放在cookie里吧!

Node.js实现兼容IE789的文件上传进度条(nodejs edge)

为了IE,我来轮询进度值了,原谅我,其实我的心很痛;

call方法即在页面上显示进度值;很不幸,你只能看到最后的%,看不到上传具体详细的进度值;再探...

好吧,我又一次沦陷了;不过还是感觉不对劲,ajax轮询没有问题,问题在于session里要等到上传完毕才有值,所以只能看到%,看不到详细进度值;我是否可以认为,在progress里,之前的res.write和这次的req.session被挂起了呢,但是它又保存了每次的执行结果,直到progress完再释放,所以只能看到%;没心情看formidable的源码,当然我也看不咋懂,我就先这么认为吧!

既然ajax轮询没问题,那么就是保存到session不得劲了;实在不成,放到global里试试吧,总不会往全局对象里塞个值也会挂起吧;稍作改动放到global里:

继续轮询。

漂亮,完全就是那么回事!在chrome里看到的和HTML5的进度一个效果,只是在IE里会有点卡顿的感觉,不过还是能看到详细的进度值的;毕竟老浏览器身子骨不咋地,你们懂的;还有,每次上传都往global里塞值,怎么也得适当的清理一下吧,文件上传完毕,转移到指定目录后global['file'+queryToken]=null;

然而,轮询,就是一个接一个好多好多的请求,这里也许会出问题;要不限制一下吧,间隔ms请求一次进度值;恩,IE进度条就这么解决了,说好的丢掉flash;虽然这个轮询可以兼容所有浏览器,但毕竟要浪费那么多请求,还是判断下,在IE以外继续HTML5吧!

其实衡量一下,额外加个flash上传和额外的请求,哪个更值呢,原谅我不懂flash,就不多说了,反正我很不喜欢在页面上加一下额外的文件;

总结

关于文件上传的组件,还有很多的细节处理,本想弄一个JS文件的,后来一想,为了可复用性更强,还是作为一个独立的页面搞比较好,需要上传的地方,iframe一下就行了,肯定比弄一个JS文件要好很多。

标签: nodejs edge

本文链接地址:https://www.jiuchutong.com/biancheng/370791.html 转载请保留说明!

上一篇:解决node.js安装包失败的几种方法(node js安装教程)

下一篇:nodeJs内存泄漏问题详解(node 内存泄漏)

  • 账面成本包含增值税吗
  • 报废固定资产可以收定金吗合法吗
  • 动产增值税可以抵扣吗
  • 工厂房租没有发票怎么办
  • 提取法定盈余公积是从净利润中提取吗
  • 资产处置收益计入营业收入吗
  • 独立核算的分公司怎么报税
  • 一般纳税人购进免税农产品如何抵扣进项税额
  • 委托加工白酒消费税计税依据
  • 独立核算分公司注销需要清算吗
  • 资本金利润率多少
  • 行政单位年初预算怎么做
  • 地产企业不动产登记入哪个科目?
  • 航天服务费手写发票可以抵减吗?
  • 实行初税亩
  • 冲减以前年度所得税费用
  • 高新技术企业的行业
  • 劳务合同如何缴纳社保
  • win11如何启用远程访问
  • 不抵扣的发票是什么发票
  • 注册表修改系统安装日期
  • c盘appdata怎么清理
  • 劳务发票税率是多少
  • 企业所得税汇算清缴会计分录
  • 应收账款未计提坏账能直接核销
  • 进口货物怎样报关
  • 企业购进固定资产其入账成本应包括
  • 预付货款账务处理会计分录
  • 浅谈php中类和对象的区别
  • 坏账准备的借贷方向表示什么意思
  • php登录注册
  • php下载功能
  • 为什么很多银行卡会被异地警方冻结
  • AI工具大全
  • 删除ont命令
  • 公司未实缴能破产吗
  • rust基础操作
  • 帝国cms专题
  • php的框架
  • 详解增发万亿国债细节
  • 减值准备需要确认递延所得税资产吗
  • 增值税加计抵减政策10%和15%
  • 小额转账汇款服务最多转账多少钱
  • 行政单位基建管理办法
  • 计提所得税后再结转本年利润吗
  • 大货车怎样申请报废
  • 专项资金支出时间规定
  • 房地产企业土地增值税预缴
  • 股息所得缴纳个税吗
  • 交易性金融资产公允价值变动怎么算
  • 汽车折旧会计凭证怎么做
  • 工会赞助费
  • 企业收到政府专项奖励
  • 非流动资产增加意味什么
  • 股东投入固定资产怎么做账
  • 待抵扣进项税额
  • 航天金税税控盘服务电话
  • 生产型企业加计扣除10%
  • 固定资产净额怎么计算公式
  • sqlserver排序规则怎么看
  • win10安装mysql初始化失败原因
  • 通透Windows 2008系统状态变化
  • freebsd版本选择
  • Win10中SmartScreen无法设置需要系统管理员身份该怎么办?
  • linux系统怎么共享
  • linux 网络配置
  • cocos2d-js-min.js
  • 阿J的cocos2d-x学习笔记-元素消消看(四)-可发展的空间及游戏开发中的问题
  • unity4.1
  • dos内部命令大全
  • 批处理常用命令总结
  • 富文本编辑器模板
  • js继承怎么实现
  • php redis incr
  • Android使用领域(移动端,PC,服务端)
  • 社保申报每月几号申报
  • 我国税务师事务所有哪些
  • 动态简报和工作总结
  • 电子就业协议签了还是应届生
  • 艾地盟预混料怎么样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设