位置: 编程技术 - 正文

JavaScript File API文件上传预览

编辑:rootadmin

推荐整理分享JavaScript File API文件上传预览,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

  对于基于浏览器的应用而言,访问本地文件都是一件头疼的事情,通常我们能做的仅仅是使用<input type="file">标签来上传文件。实现过程是:选取文件的时候value 属性保存了用户指定的文件的名称,表单被提交的时候,浏览器会向服务器发送选中的文件的内容而不仅仅是发送文件名。再获取服务器返回的地址,然后做预览。

  但是如果有一天我们要上传一个图片,传了图片后预览想换另一张图片,就又得先上传到服务器再预览。在网络比较慢的情况下,这样真的很折腾。

  所以我们某些时候需要先预览再上传到服务器,特别是一些有剪切功能的需求,例如新浪微博的头像更换。但是目前能做的只能是借助插件开发或者使用flash,由于不同浏览器的技术实现不尽相同,为了让程序能够支持多浏览器,我们的程序就会变得十分复杂而难于维护。幸好现在有了File API。

  通过监听change事件我们可得知用户选择的文件,并且添加了一个files集合,集合中将包含file对象,每个file对象对应着一个文件。并且都有以下只读属性name,size,type,lastModifiedDate.

以<input type="file" name="file">为例,监控onchange事打印它的file对象:

  

  由此我们可得知用户选取的文件格式,文件名以及文件大小等等的一些信息。因此我们很容易就能为所选取的文件作验证判断是否符合我们定的一些要求。

除此之外File API还提供了FileReader类型读取文件中的数据。

FileReader类型实现的事一种异步文件读取机制,类似于XMLHttpRequest,但是它读的是文件系统而不是远程服务器。并且提供了几种读取方法:

readAsText(file,encoding):以纯文本形式读取文件,将读取到的文本保存在result属性中,第二个参数用于指定编码类型,可选。 readAsDataURL(file):读取文件以数据URL的形式保存在result属性中。 readAsBinaryString(file):读取文件并将一个字符串保存在result属性中。 readAsArrayBuffer(file):读取文件并将一个包含文件人容的ArrayBuffer保存在result属性中JavaScript File API文件上传预览

通过以上方法分别读取同一张本地图片,并且把保存在result属性中的信息打印出来对比如下:

readAsText(file,encoding):

readAsDataURL(file):

  通过以上对比我们发现这些读取文件的方法为灵活的处理文件数据提供了极大的方便。例如读取图像文件并且保存为数据url,可以做上传前的预览功能。

  由于读取的过程是异步的,所以FileReader里面有几个事件分别处理不同的情况:progress(是否读取了新数据)、erro(是否发生了错误)、load(是否已经读完了整个文件)。

  由于种种原因无法读取文件就会触发error事件,触发error事件的时会有一个属性code(错误码)保存在FileReader的error属性里面的一个对象中。

使用FileReader做上传预览的例子:

HTML:

JavaScript:

效果以及返回的图片URL:

标签: JavaScript File API文件上传预览

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

上一篇:javascript绘制漂亮的心型线效果完整实例(javascript如何绘制曲线)

下一篇:详解Webwork中Action 调用的方法(activate webstorm)

  • 新注册公司没有员工怎么报个税
  • 诚信纳税的含义是什么
  • 资金结存期末余额方向
  • 建筑行业增值税税负率一般控制在多少合适
  • 机械设备租赁印花税谁交
  • 境外企业在境内取得的收入所得税
  • 工程收到奖励款怎么账务处理?
  • 出差补助没有发票计入什么科目
  • 支付宝转账到银行卡多久到账
  • 增值税免税收入进项税额转出
  • 运输发票抵扣税率是有多少?
  • 分期付款股权转让
  • 支票入账怎么填写
  • 会计调账必须写说明吗
  • 存货发出记账成本最高
  • 支付工程款会计处理
  • 总公司和分公司的合作协议
  • 简单介绍linux
  • 已认证的发票退税怎么退
  • 购入办公桌椅怎样入账
  • 商业承兑汇票如何签收
  • 如何断开微软账户与电脑的链接
  • phpstudy如何查看错误日志
  • 有哪些分享方式
  • PHP:pg_field_type_oid()的用法_PostgreSQL函数
  • win11 build 22000.65
  • 补发的商品要钱吗
  • 销售返利的形式有哪些
  • yolov2训练
  • 实际借款成本率
  • php删除语句
  • 文化事业建设费减免政策
  • 蓝桥杯b组2020
  • 因果推断的常用标准
  • typescript教程推荐
  • 应付票据贴现是负债吗
  • 快递公司账务处理流程及方法总结
  • 投资收益借贷方代表什么
  • 外购存货的初始成本由买价加采购费用构成
  • 经营范围广告业务能开什么发票
  • 其他应收款的审定表怎么填
  • SQLSERVER2008中CTE的Split与CLR的性能比较
  • Linux编译mssql扩展使用php连接sqlserver2008的使用步骤
  • 个体户经营所得税率表
  • 工资不计提直接做管理费用可以吗
  • 新股东入股的账务处理
  • 收到加工费怎么做账务处理分录
  • 合并报表时存货公允与账面的差额
  • 一般销售商品收入怎么算
  • 发票已认证次月退回
  • 未分配利润太多的危害
  • 暂估入库成本差异
  • 应付职工社会保险费计入什么科目
  • 3个点专票和6个点专票区别
  • 小规模纳税人购进税控设备如何抵扣
  • 企业和职工之间的财务关系属于
  • 如何解决局域网问题
  • sql 复合语句
  • win8系统自带截图
  • 2015微软发布会
  • 激活窗口的菜单的快捷键
  • 在linux中使用哪个命令可以用于管理用户账户
  • 在linux系统中命令
  • windows10周年更新
  • 电脑xp系统虚拟内存不足怎么解决
  • linux限制用户cpu使用
  • 笔记本怎么设置定时关机
  • win8 开始
  • Unity Spine Skeleton Animation 2D骨骼动画 For Game 介绍
  • js区分浏览器页面大小
  • nodejs制作网站
  • Python遍历文件夹及子文件夹中的所有文档
  • linux中的ls命令的功能是变换工作目录到目标指定目录
  • javascript data
  • javascript面向对象编程指南
  • 网上报税失败什么原因
  • 浙江省电税务局电话
  • 税票是什么发票
  • 财税2016年47号文件中的劳务派遣
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设