米
心情
所有
图集
登录
搜索
原创
原生js上传图片,预览图片
笑叹轻舞芳华
发布于:2021-10-13
之前写上传都需要用别人的框架,是因为自己不会写js的上传个预览,这次特地百度并且自行尝试了一下,写下此图片预览和上传的demo留作备用。主要使用了js的`FileReader`和`FormData`对象,一个用来获取base64的流进行预览,另一个用来上传file,具体逻辑大家可以查看下列代码 ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>micuer - 图片选择/预览/上传</title> </head> <body> <div class="container"> <img src="" id="preview" alt=""> <!--用input标签并选择type=file,记得带上multiple,不然就只能单选图片了--> <input type="file" id="file_input" multiple/> <button id="submit">提交</button> </div> </body> <!-- <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> --> <script> document.getElementById('file_input').addEventListener('change', function(e) { //1.可以通过this拿到这个file的DOM元素 console.log(this) //1. e 函数事件参数对象中也有这个file的DOM元素对象。使用e.target也可以直接拿到 console.log(e.target) //对开发人员屏蔽,所以直接 必须调用这个文件的DOM对象的files属性,返回一个数组 let files = e.target.files console.log(files) // console.log(files.item(0)) console.log(files[0]) //预览 ----- 此处只判断了 第一张图 - 后续逻辑需要大家自行优化 if (files[0]) { // 创建流对象 reader = new FileReader() reader.readAsDataURL(files[0]) } reader.onload = function(e) { // 转换后的base64就在e.target.result里面,直接放到img标签的src属性即可 document.querySelector('img').src = e.target.result } //预览结束 ----- // 判断一手是否有文件 if (!files.length) return // 上传文件 创建FormData let formData = new FormData() // upFile就是后台接收的key formData.append('upFile', files[0], files[0].name) // 将formdata发送到后台即可 // 我用的 axios.post('url', formData) 或者 $.post(url,formData) }) </script> </html> ``` [](https://micuu.com/data/avatar/20211013/9621bd33f76e4546ac341ee191e664fe.png)
注:原创不易,转载请注明出处(
http://www.micuu.com/new/2225.html
),本站所有资源来源于网络收集,如有侵权请联系QQ245557979进行清除。
最后修改与 2022-02-20
上一篇:
【蜜汁猫裘】护士 少女写真
下一篇:
js邮箱格式验证
留言反馈
请先登录
问题反馈渠道,如有软件无法下载或者其他问题可反馈。【由于某种原因,目前留言不展示】
用户需要登录后才能留言反馈
立即留言
珍藏视频
10分钟高效燃脂
30天高效瘦脸操
5分钟缓解颈椎操
友人
微博
全民K歌
唱吧
今日头条
悠悠网
科技小锅盖
彼岸桌面
阮一峰
laravel社区
V2ex
掘金
更多>