位置: 编程技术 - 正文

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)

  • 应交税金指什么意思
  • 加班费计入个税吗
  • 税务登记证号是纳税人识别号吗?
  • 个体工商户怎么申请开普票
  • 城市维护建设税是什么意思
  • 物流进项税
  • 固定资产未付款怎么入账
  • 研发投入和研发支出的关系
  • 一个季度是多长时间
  • 出口免税收入会退税吗
  • 公司员工的车外地的停车费怎么做分录
  • 增值税销项税如何进行处理,有哪些种情况
  • 企业采购材料没有发票是要交企业所得税吗
  • 现金流量表本月数和本年累计数不一致
  • 医疗器械销售初次拜访话术
  • 出口当月开票当月申报吗
  • 所得税预缴申报表
  • 实际发生额大于账载金额
  • 承兑汇票银行背书
  • 一般纳税人必须要交几个人社保
  • 股权转让需要什么资料
  • 无法支付的其他账户
  • 稽查查补税款怎么计算企业所得税
  • 软件进项税额分摊方式
  • 单位自办食堂为单位职工提供餐饮服务要交增值税吗
  • 给出含税货款会计分录
  • 交通费用扣除标准
  • fxssvc.exe
  • 实收资本没到位会计怎么处理
  • 吃鸡到底用什么显卡性价比最高?
  • 固定资产抵账的增值税
  • php数组按照某个字段排序
  • vue错误处理
  • 公户发工资必须是员工账号必须是公户开户行吗
  • bit/ttagapp
  • 材料采购计入哪个账本
  • 资产负债表不平衡能结账吗
  • dedecms插件
  • 未发货先开票是否违法
  • 血液制品增值税税率
  • 下列项目的进项税额可以从销售税额中抵扣的是
  • 个税申报方式是什么意思
  • linux mysql 找回密码
  • mysql如何开启
  • 计提资产减值准备时,借记的科目是
  • 一般纳税人购买固定资产进项税可以抵扣吗
  • 初级会计计划成本例题
  • 应收账款平均余额怎么理解
  • 什么是限制性股票激励
  • 销售过程中发生的商业折扣计入
  • 股权转让的会计处理怎么做
  • 公司账户转账转错了能退回来吗
  • 银行利息收入如何记账
  • 或有租金租赁
  • 总公司和分公司企业所得税分配
  • 无法启动diagnostic policy service服务
  • windows桌面快捷方式怎么创建
  • Win10预览版桌面图标和任务栏不翼而飞怎么办?
  • Windows 10 PC/Mobile Build 14965预览版推送:改进PC端
  • win2003取消自动锁定
  • centos 文件管理
  • linux oracle 12505
  • 用win7的人多吗
  • win7系统如何提升开关机速度
  • win8怎么找开始程序
  • linux就该这么
  • win7旗舰版64位系统开机时软件设置自动启动详细图文教程
  • opengl自学
  • nodejs获取post数据
  • ftp自动上传文件怎么关闭
  • 使用jquery
  • jquery替换div内容
  • Python爬取微信视频号
  • python爬虫代码怎么写
  • js如何判断输入输出
  • 税务总局各司领导名单
  • 扬州国家税务学院在哪个区
  • 怎么查税务是否备案
  • 化妆品过海关要交税吗
  • 普通版怎么下载
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设