位置: 编程技术 - 正文

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)

  • 企业收到退税款怎么处理
  • 仓库盘亏怎么处理
  • 代开专票上的税额比电子缴款凭证上的税额少怎么调整
  • 电子发票打小了可以报销吗
  • 红字信息表撤销失败B80095
  • 分期付款方式销售货物什么时候确认收入
  • 房产企业因资金问题退市
  • 往来账审计存在问题及建议
  • 行政事业单位凭证培训课件
  • 合同期限3年
  • 增值税一般纳税人认定标准
  • 跨年成本发票红冲怎么做会计分录
  • 增值税专用发票有效期是多长时间
  • 减免税期间是什么意思
  • 企业所得税营业利润怎么算
  • 小规模企业增值税税率
  • 商用房的增值税是多少
  • 管理费用金额多做了,如何减少
  • 收到对方公司的货款怎么记账
  • 社保打的生育保险怎么做账
  • 华为鸿蒙系统如何关闭hd通话
  • excel中如何选择只能选择的项
  • win10更新21h1后很卡
  • php如何实现
  • 借条和欠条的区别 法律效力
  • 如何进入企业年报系统
  • 最贵的一个苹果多少钱
  • Uniapp 使用mocjk
  • php两种赋值方式
  • php deprecated
  • 克扣拆迁款
  • 企业所得税核定征收方法有哪两种
  • Joomla简单判断用户是否登录的方法
  • php语言之面向对象编程 educoder
  • php数组分类
  • php教程100
  • 会计期初余额和期末余额计算公式
  • 93.transformer、多头注意力以及代码实现
  • openai.error.AuthenticationError: No API key provided.
  • pyecharts 表格
  • php事件机制
  • 交通银行手机银行网页版
  • 业务招待费可以结转以后年度扣除吗
  • 纳税调增调减通俗易懂
  • 普通发票密码区出格了能用吗
  • 未分配利润处理顺序
  • 购进固定资产的账务处理
  • 什么叫做固定资本
  • 营改增是否降低了企业税负
  • 退休人员的返聘合同
  • 事业单位库存物品
  • 增值税专票开具与发票专用章保管
  • 工程挂靠取得的收入怎么做账?
  • 公司开发的app费用怎么算
  • 融资租赁的计算方法有哪些
  • 自产自销免税农产品需要缴纳印花税吗
  • 发票商品编码在发票上面体现出来吗
  • mysql数据库中SELECT * FROM是什么
  • 如何在ubuntu下安装和配置gcc并用C语言
  • macos怎么使用
  • windows字体不显示
  • netcfg -d
  • win7电脑开机提示oxcoooooe9
  • windows7修改注册表
  • linux系统服务器怎么进入桌面
  • rtk api error=3
  • linux 怎么样
  • linux系统入侵检测软件有哪些
  • JavaScript中的方法名不区分大小写
  • js调用方法什么时候要加括号
  • 基于JAVASCRIPT实现的可视化工具是
  • javascript简单
  • python中time模块源代码
  • 推荐javascript教程
  • Python中列表元素可通过什么访问
  • 发票怎能打印
  • 税务谈心谈话记录2021
  • 天津海泰南路属于哪个区
  • 河南省纳税服务平台
  • 法制观念的问题
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设