- 准备一个
<input type="file" hidden>
并通过 hidden 属性隐藏 - 准备一个按钮,给按钮绑定点击事件,在事件的回调里面主动触发 input:file 的 click 事件
- 监听 input 的 onchange 事件,在回调里面通过 e.target.files 拿到文件信息
创建 formData 对象,把文件信息放进去通过 axios 传到后端
const form = new FormData() form.append('avatar', e.target.files[0])
5.图片预览:URL.createObjectURL(Blob) 或 FileReader(base64)
<input type="file" hidden id="file" /> <img id="img" alt="" /> <button id="btn">click</button> <script> btn.onclick = function () { file.click() } file.onchange = function (e) { const f = e.target.files[0] const formData = new FormData() formData.append('avatar', f) // axios({ url: '/xxx', data: formData }) /* const s = URL.createObjectURL(f) img.src = s */ const fileReader = new FileReader() // 图片 => base64 fileReader.readAsDataURL(f) fileReader.onload = function () { img.src = this.result } } </script>
文件清空方法:
1.给封装的组件绑定布尔值,通过v-if创建和销毁新dom
2.弹窗消失,手动将文件清空。ref同理
3.也可以给input绑定v-if 和第一条同理
最后编辑:2022年08月13日
©著作权归作者所有
最新回复