博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue项目使用原生input file实现图片上传提交
阅读量:6582 次
发布时间:2019-06-24

本文共 2335 字,大约阅读时间需要 7 分钟。

需求

最近做项目需要用到提交照片墙,本来项目使用的是element-ui的上传图片组件,后来考虑到优化问题,觉得没有必要为了一个上传引入如此大的UI库,因此考虑使用原生的方法来实现图片上传功能。

实现

准备

由于项目需要用到弹框以及toast等功能,因此改用了一个轻量级的UI库———vant,具体使用方法请看,接下来话不多说,直接上代码

HTML

×
复制代码

van-uploader是vant库里的上传图片组件,after-read是读取完成后的回调函数,我这里懒得重写css样式就直接引入了,使用<input type='file'/>的onchange属性也可以实现同样的功能。

JS

data(){            return{                img:[],            }        },    methods:{            onRead(e){                //注意,我们这里没有使用form表单提交文件,所以需要用new FormData来进行提交                let fd= new FormData();                fd.append("upfile", e.file);//第一个参数字符串可以填任意命名,第二个根据对象属性来找到file                                axios.post(url, {params:fd}) //url是服务器的提交地址                    //成功回调                    .then(res => {this.img.push(res.data.imgpath); }) //将服务器返回的图片链接添加进img数组,进行预览展示                    //失败回调                    .catch(err => {alert(err);});                    };            },            //删除预览图片按钮            imgclose(e){                this.img.splice(e,1);            }    }复制代码

CSS

.icon-add{        width: 200px;        height: 200px;        border: 1px dashed #9a9ba3;        overflow: hidden;        display: flex;        margin-top: 20px;    }    .icon-add:before{        content: '';        position: absolute;        width: 50px;        height: 2px;        left: 50%;        top: 50%;        margin-left: -25px;        margin-top: -1px;        background-color: #aaabb2;    }    .icon-add:after{        content: '';        position: absolute;        width: 2px;        height: 50px;        left: 50%;        top: 50%;        margin-left: -1px;        margin-top: -25px;        background-color: #aaabb2;    }    .icon-po{        position: relative;        width: 200px;        height: 200px;        margin-right: 20px;        margin-top: 20px;    }     .icon-close{        position: absolute;        right: 5%;        top: 5%;        width: 30px;        height:30px;        border-radius: 50%;        background-color:red;        color: #fff;        font-size: 12px;        display: flex;        align-items: center;        justify-content: center;    }复制代码

最终效果

小结

前段input提交图片文件通常使用两种方式,一种是form表单提交,还有一种是formData。

转载于:https://juejin.im/post/5b3d88995188251aa828ff44

你可能感兴趣的文章
CentOS7使用firewalld打开关闭防火墙与端口
查看>>
maven 添加阿里云maven镜像
查看>>
mac上安装consolas字体
查看>>
对向量、矩阵求导
查看>>
各版本linux下载地址大全
查看>>
CentOS 6.X 关闭不需要的 TTY 方法
查看>>
我的友情链接
查看>>
分区技术学习一
查看>>
Juniper 高级选项
查看>>
编程能力的四种境界
查看>>
编译安装mysql
查看>>
在windows上秒开应用程序
查看>>
【20180611】MySQL OOM
查看>>
Python面向对象编程(一)
查看>>
决心书
查看>>
如何把图片上的文字转换成word?
查看>>
7z命令行
查看>>
C语言编程实现 输入一个非负整数,返回组成它的数字之和(递归方法)
查看>>
c3p0
查看>>
redis cluster 集群搭建(增、删、改、查) :5.0.2
查看>>