位置: 编程技术 - 正文

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)

  • 法人个人账户收款是否属于公司业务
  • 企业购入免税农产品
  • 停车费增值税税率
  • 老板的报销分录怎么写
  • 小规模公司的外汇业务
  • 企业银行贷款报表要求
  • 背书承兑分录
  • 免征增值税的个体户个税
  • 进项都抵扣完了怎么办
  • 建行网银转账复核流程
  • 政府补贴中介合法吗
  • 补交以前年度增值税的科目处理
  • 外汇资本金入账要求
  • 按简易办法计税销售额税率
  • 制造费用属于哪一类科目
  • 燃油税里面包含哪些内容
  • 存款利率怎么算存一年后的金额
  • 营改增后常用发票报销的种类有哪些呢?
  • 车辆保险费包括
  • 一般纳税人6个点和13点
  • 国家税务总局13号文
  • 冲红发票还能二次冲红吗
  • 采购合同的运作过程为
  • 金蝶财务软件录入凭证
  • 金税盘减免税款贷方余额
  • 税法种类及税率
  • 1697509300
  • 上月未结账
  • 如何保护excel表格不被打开
  • 个人社保和公积金扣款公司七个人三怎么样
  • 在php中,字符串有哪些表示形式
  • 收益性支出与资本性支出的主要特点
  • 以前年度多计提的附加税怎么冲回
  • PHP:pg_set_error_verbosity()的用法_PostgreSQL函数
  • PHP:pcntl_signal()的用法_PCNTL函数
  • 招标单位收取标书费多少钱
  • 劳务报酬所得与经营所得
  • 金融资产的会计处理方法
  • 本单位生产的水泥属于
  • 铁路运输企业受托代征的印花税款信息
  • PHP:mdecrypt_generic()的用法_Mcrypt函数
  • 处置二手固定资产
  • 厂房的设计审查要求
  • php读取json数组中指定内容
  • thinkphp登录
  • elementui动态表单数据回显
  • 融资租赁初始直接费用计入哪个科目
  • 未开票金额怎么填写
  • 企业所得税成本核定
  • 在建工程应交税金怎么算
  • 企业主营业务利润是由什么构成的
  • 购买的手机可以退货吗
  • 待摊费用如何做账 税金怎么处理
  • 红字发票异常处理什么意思
  • 材料报废如何做分录
  • 货款和发票金额一样吗
  • 公司收不到的账款怎么办
  • 定额发票收入怎么样确定
  • 增值税系统技术维护费 减免政策
  • sqlserver数据库备份
  • 安装sql server需要注意什么
  • win7系统怎么把桌面文件放到d盘
  • 一步一步教会你走路
  • pe explorer
  • win10 预览版变正式版
  • micc是什么意思中文
  • f_00000e是什么文件
  • 延迟windows更新
  • 强缓存标志
  • pdv是什么格式文件
  • apache2.4配置文件详解
  • es6中的class常见使用场景
  • vue中的组件通信
  • jQuery实现TAB选项卡切换特效简单演示
  • js实现兼容性较好的方法
  • js table
  • 开票系统忘记密码怎么找回
  • 税务通知书一般什么内容
  • 赣州买二手房限购吗
  • 国税和地税是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设