位置: 编程技术 - 正文

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)

  • 增值税报表解读
  • 消费税的税目有多少
  • 第四季度报表和年度报表一样吗
  • 销项负数发票是代表交易没有成功吗?
  • 什么情况下纳税调减
  • 已贴花的凭证凡修改后所载金额增加的部分应补贴印花
  • 派发股票股利如何入账处理合适?
  • 股权转让过户费用
  • 公司作为承租方需要交房产税吗
  • 工程基建期的工作总结
  • 转让法人要注意什么
  • 不得扣除任何费用的是
  • 专票密码区压线可以报销吗
  • 居间费税收是多少
  • 金融企业贷款损失税前扣除
  • 应收出口退税属于哪个会计科目
  • 汇算清缴交的税怎么做分录
  • 怎么找回被册的软件
  • 行政单位年底结账怎么算
  • windows7给c盘扩容
  • 收到的销项负数要认证吗
  • paytime.exe - paytime是什么进程 有什么用
  • executor进程
  • 归属性质
  • php操作mysql数据库
  • 母公司收取子公司管理费的税率
  • 税收协定与国内税法发生冲突
  • 什么叫财政专户返还方式
  • 金税盘,税控盘Ukey价格
  • 前端file对象
  • 个人所得税的现状分析
  • vue3的unplugin-auto-import自动引入
  • css+html
  • vuexl
  • 企业的研发费用如何进行账务处理
  • 固定资金的概念及其特点
  • 印花税减免退回会计分录
  • 库存材料清查结论怎么写
  • 商标注册费用可以退吗
  • mongodb连接数
  • 学习笔记——Django项目的删除数据、查询数据(filter、get、exclude)
  • 增值税是如何计算的
  • sqlserver如何锁表
  • sql server2014使用
  • sqlserver远程连接失败
  • 兼职工资比正式工的工资高还是低
  • 预期信用损失率的确认依据和过程
  • 暂估入库的商品作暂估冲红会计分录
  • 劳务公司的成本有哪些
  • 异地预交所得税分录
  • 小规模纳税人减按1%怎么计算
  • 车间杂工工资如何结算
  • 加计扣除所得税申报表怎么填写
  • 工会经费账务处理流程
  • 应收利息和利息收入的差额
  • 企业差旅费的报销流程
  • 甲公司控股乙公司
  • 建设工程毛利率如何计算
  • 智能abc不能输入汉字
  • wibdows任务管理器
  • ie11安装方法
  • windowxp系统升级
  • win8如何添加我的电脑
  • 给推荐几款
  • w10系统输入法
  • win8 怎么样
  • 如何修改windows密码策略
  • win10系统如何设置锁屏壁纸图片
  • opengl画矩形函数
  • excel的exceladdinrd加载项出现问题
  • ftp下载工具能自动登录ftp服务器
  • 在浏览器中打开是什么意思
  • jQuery tagsinput在h5邮件客户端中应用详解
  • python中的省略号怎么打
  • [置顶]游戏名 TentacleLocker
  • javascript数组有哪些方法
  • jquery数据绑定
  • 动感相册模板
  • 广西地方税务局2018年1号公告
  • 国税局可以办理什么业务
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设