美文网首页
vue 使用upload组件上传单图和多图

vue 使用upload组件上传单图和多图

作者: 魔主恋上九尾狐 | 来源:发表于2020-03-27 17:02 被阅读0次

    单图上传(例如上传头像):

    <van-uploader :before-read="beforeRead" :after-read="afterRead" :preview-full-image="false" :deletable="false">

        <pk-img

                round

                :src="tempFilePath"

                width="60px"

                height="60px">

        </pk-img>

    </van-uploader>

    Js:

    // 返回布尔值

    beforeRead(file) {

        if (file.type !== 'image/jpeg') {

            this.$toast({

                message:"请上传 jpg 格式图片"

            });

            return false;

        }

        return true;

    },

    afterRead(file) {

    /*

    注意:当选择一张图片时,file是一个对象不是数组!!

    */

        //构造一个 FormData,把后台需要发送的参数添加

        // 接口需要传的参数

        //将formDate文件上传到服务器,会返回图片地址imgUrl

        let formData=new FormData();

        formData.append('file', file.file);

        this.$api.image(formData).then(res => {

            let imgUrl=this.$resData(res);

            if(imgUrl){

                this.tempFilePath=imgUrl;

                this.$api.modHeadPortrait({

                    headPortrait:imgUrl

                }).then(res=>{

                  if(res.status===200){

                        this.getUserInfo();

                        this.$toast({

                            message:"修改头像成功"

                        })

                    }else{

                        this.$toast({

                            message:"修改头像失败"

                        })

                    }

                })

            }else{

                this.$toast({

                    message:"网络请求失败"

                })

            }

        });

    },

    多图上传:

    <van-uploader v-model="picList" :multiple="true" :after-read="afterRead" :max-count="5">

        <div class="d-flex-pk ">

            <div class="upLoadImg position-relative">

                      <div class="imgDr">

                    <img src="../../../assets/images/camera.png" alt="" width="25" height="20">

                </div>

                <div class="upImg text-main-pk">上传图片</div>

            </div>

        </div>

    </van-uploader>

    Js:

    const formData=new FormData();

    //将formData放在外面,避免每次选择图片都初始化。

    return {

        picList: [],

    formData:formData,

    }

    methods:{

    afterRead(file) {

        this.$toast.loading();

        for (let i = 0; i < file.length; i++) {

    //'files':后台接收的参数

            this.formData.append('files', file[i].file);

    //此时可以上传图片到服务器

            }

    //若要进行删除图片列表中的图片操作,则先获取到图片数组,将下面这部到提交的时候再执行

    //api接口:images

    this.$api.images(this.formData).then(res=>{

        this.$toast.clear()

        let result=this.$resData(res)

        if(result) {

            this.picList = result;

        }else{

            this.$toast({

                message:"上传图片失败"

            })

            return

        }

    })

        },

    }

    相关文章

      网友评论

          本文标题:vue 使用upload组件上传单图和多图

          本文链接:https://www.haomeiwen.com/subject/gvqruhtx.html