位置: 编程技术 - 正文

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 内存泄漏)

  • 公司注销股东收回公司车辆做什么账务处理
  • 资金预算表编制依据
  • 企业所得税如何规避
  • 未取得发票的费用,在汇算清缴中按利润计算吗
  • 汇算清缴利润调整会计分录
  • 开票和预缴税款跨月
  • 上个季度财务报表已申报,可以更正吗
  • 减免所得税优惠明细表怎么填
  • 收到社保生育津贴摘要怎么写
  • 特许权使用费是什么意思
  • 租赁个人汽车
  • 办理产权证费用明细
  • 报无票收入又开发票了怎么办?
  • 技术服务合同增值税税率3%
  • 开给客户的发票对方已认证
  • 销售已作进项税转出的固定资产怎样缴税?
  • 跨期费用审计调整分录
  • 企业转让土地使用权交什么税
  • 企业社会贡献总结怎么写
  • 物流公司运费账务处理
  • 鸿蒙系统开发者选项怎么关闭
  • mstore.exe - mstore是什么进程 有什么用
  • sudo命令无法执行
  • PHP:apache_request_headers()的用法_Apache函数
  • PHP:base64_decode()的用法_url函数
  • 企业发放职工薪酬属于资金的运用
  • 结转本年利润的分录怎么写
  • 企业收到分红款是免税收入吗
  • 库存股的会计科目
  • 用银行存款支付本季度短期借款利息
  • call for conference paper
  • 西部大开发的主要政策措施是什么?
  • 应付职工薪酬的含义
  • 公司投资资金
  • 银行转账费用试算失败什么意思
  • 怎样退出快手粉丝团 已解决
  • thinkphp pathinfo
  • vue图片点击放大
  • 图像处理入门
  • 总公司与分公司怎么报税
  • 模具固定资产如何核算
  • 织梦如何采集文章
  • 核定征收企业注册
  • 有材料成本差异的材料入库会计分录
  • 我向银行借钱我是贷方还是借方
  • 哪些收入需要交消费税
  • 港资企业属于什么性质
  • 开增值税发票规格是否可以不用填?
  • 税控系统技术维护费的申报抵扣方法
  • 承兑汇票找公司贴现违法吗
  • 转让旧固定资产可以开专票吗
  • 税收返还会计处理方法
  • 债务重组的方式不包括借新债还旧债
  • 购买劳务费会计分录
  • 退货销售折让会计分录
  • 短期借款计提利息计入什么科目
  • 外包人员的餐费怎么入账
  • 公司提前扣员工保险合法吗
  • 如何计提五险一金比例
  • 计提折旧有哪些会计科目
  • 商业健康保险抵扣个税规定
  • 创建的sql语句
  • ubuntu14.4安装教程
  • Win10 Mobile RS2预览版14951升级遭遇卡在0%的解决办法
  • armcc.exe
  • Win7开机就蓝屏
  • Win10系统如何打开任务管理器
  • cocos2dx运行原理
  • opencv轻松入门
  • 批处理语言 从入门到精通
  • dos 删除文件夹下所有文件
  • node.js开发实战详解
  • Python 使用requests模块发送GET和POST请求的实现代码
  • jquery.browser
  • 手把手教你打造班级主题环境 培训后心得
  • 残疾人买车可以减免购置税吗
  • 社保当月减员当月还可以增加上吗
  • 个体工商户两处所得,如何减半个税
  • 免抵税额在增值税申报表附表
  • 2021年个税退税条件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设