js读取 input file 文件的两种方式:

<div id="localImag"><img id="preview" src="" width="150" height="180" style="display: block; width: 150px; height: 180px;"><input type="file" name="img" id="docfile" style="width:150px;" onchange="setImagePreview();">
</div>

1.使用FileReader读取图片(转化为base64)

function setImagePreview() {var docObj = document.getElementById("docfile");var imgObjPreview = document.getElementById("preview");console.log(docObj.files[0])if (docObj.files && docObj.files[0]) {var reader = new FileReader();reader.readAsDataURL(docObj.files[0]);//发起异步请求reader.onload = function(){//读取完成后,数据保存在对象的result属性中// console.log(this.result)imgObjPreview.src=this.result}}
}

主要使用readAsDataURL去完成转换base64,如果是文档,也可以用readAsText(file,encoding)去读取。

方法

FileReader提供了如下方法:

readAsArrayBuffer(file) 按字节读取文件内容,结果用ArrayBuffer对象表示
readAsBinaryString(file) 按字节读取文件内容,结果为文件的二进制串
readAsDataURL(file) 读取文件内容,结果用data:url的字符串形式表示
readAsText(file,encoding) 按字符读取文件内容,结果用字符串形式表示
abort() 终止文件读取操作

readAsDataURL和readAsText较为常用,这里只对这两者进行说明。

2.使用 window.URL.createObjectURL  读取图片(转化为blod)(推荐)

function setImagePreview() {var docObj = document.getElementById("docfile");var imgObjPreview = document.getElementById("preview");console.log(docObj.files[0])if (docObj.files && docObj.files[0]) {imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);}
}

总结

按照前辈们的说法,creatObjectURL可以有更好的性能,或许是浏览器自带接口的原因, 可以处理的更快。

而且最近做了一个需要上传图片预览的项目,用的最简单的input file上传,最开始想到的就是用filereader实现前端预览,很简单,见前面的第一段代码,在自己手机上测试,没问题。但在某些奇葩手机上,比如oppo 安卓4.3在我们app的webview内通过打开相册上传发现无法预览图片!但在该手机的微信,浏览器内上传均可以!所以推荐使用window.URL.createObjectURL

最后如果需上传,可以使用form或者使用ajax上传,form表单提交比较简单,就不介绍。

ajax提交的时候原理还是获取到obj.files[0]后。利用实例化的FormData 上传文件。如:

let fileObj = this.$refs.fileObj.files[0]; // js 获取文件对象var formData = new FormData();formData.append('file', fileObj);axios({url: process.env.URL_PATH + '/mallSealApply/uploadSealApply',method: 'post',headers: {'Authorization': this.$store.state.token},data: formData})

input file读取文件相关推荐

  1. input file获取文件路径_python 基础 — 整理文件

    点击上方蓝字"Python圈子",进行关注~ 前言 文件整理常常会浪费很多时间.但如果让机器来做这样复杂的事情,不到 10 秒钟就能完成 1 个小时工作. 整理方式 进行文件整理最 ...

  2. html file自动获取文件路径,input file获取文件路径时无法获取正确的路径

    页面有一个input file服务器控件,一个div,div是image标签的容器,当点击input file的值改变,我们往div里追加image标签:但当通过js的onchange事件动态获取in ...

  3. file input 点击没反应_动态input file多文件上传到后台没反应的解决方法!!!

    其实我也不太清除具体是什么原因,但是后面就可以了!!! 我用的是springMVC 自带的文件上传 1.首先肯定是要有springMVC上传文件的相关配置! 2.前端 这是动态input file上传 ...

  4. input file 选择文件后自动上传文件

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  5. html读取url中文件,HTML5基础知识 - JavaScript API - File - 读取文件为DataURL

    JavaScript 语言: JaveScriptBabelCoffeeScript 确定 // Content section used alot var content = document.ge ...

  6. input file获取文件路径

    html代码段: <input type="file" @change.prevent.stop="upload"> vue 中script代码段: ...

  7. java File读取文件始终不存在的问题分析

    先上图: 如图,f1 始终能读到该文件,使用的是绝对路径 f2 却是相对路径. 感觉很奇怪,明明一模一样的代码为什么会产生不同的结果呢? 首先想到的是是不是有什么特殊字符.. 拿到notepad++中 ...

  8. html只允许上传xlsx,input file限制上传文件类型的方法

    在前端html中,上传文件时,一般都是用到 type 属性值为 file 的 input 标签,但在默认情况下,file 类型的 input 标签是不限制选择本地文件的类型的,那么本篇博文,飞鸟慕鱼就 ...

  9. js文件上传以及js清空input file值

    最近项目中遇到文件上传的案例, 之前涉及文件上传的较少, 今天针对js文件上传的案例做一个详细的教程,方便日后查阅! 本教程从 原生JS, jQuery, 两处着手简单介绍文件上传案例 1.原生JS ...

最新文章

  1. 用js方法做提交表单的校验
  2. 应用上架被拒2.1问题
  3. java 成绩 排名算法_Java计算成绩平均值和排名
  4. C# List Sort
  5. Go实战--也许最快的Go语言Web框架kataras/iris初识二(TOML、Cache、Cookie)
  6. 获得Google搜索字符串中的关键字
  7. Rancher助力美国农业部的容器实践之路
  8. 韩顺平php视频笔记36 php基本语法
  9. python表白代码-如何用Python代码向心爱的姑娘花式表白?
  10. 第十章 嵌入式linux的调试技术
  11. 超详细的SFtp工具类及使用
  12. 摄像头-MIPI接口、DVP接口和CSI接口
  13. python安装pandas pytz_python安装pandas+pytz
  14. 三维扫描仪[3]——标定·理论
  15. vs2017 中项目的publish,即“发布”到底是什么?
  16. peoplesoft链接oracle,Oracle 调整对PeopleSoft HRMS8.8的支持延伸到2011年
  17. 人机的未来关键在于发现新的逻辑体系
  18. 一个人写一个集群:基于GRPC的golang微服务框架iogo(grpc/protobuf/etcd/freetoo/码客 卢益贵)
  19. 使用代码列出金庸小说中使用过的所有成语
  20. SAP SD - 交货POD收货确认

热门文章

  1. SoriTong1.0漏洞分析
  2. 亚马逊、速卖通、temu、Cdiscount通过自养号给自己店铺测评补单需要哪些技巧?
  3. 西湖论剑2022部分misc
  4. (PHP)将别人女朋友照片转成动漫头像(详细)
  5. python多变量拟合_python多元拟合问题
  6. 解决罗技鼠标G403拖动Office时出现的窗口掉帧问题
  7. 2023秋招——海康威视海外技术支持
  8. 小米6X开发版开启root(线刷),修改hosts
  9. 魅蓝x android 7,魅蓝X和荣耀7哪个好
  10. TOMCAT的作用及各目录作用