美文网首页
vue 上传图片

vue 上传图片

作者: 姀影 | 来源:发表于2020-03-23 16:21 被阅读0次

闲暇时间回顾一下写的东西。
vue上传图片。UI框架是iView ,element-ui原理相同
先看下效果图

屏幕快照 2019-04-25 下午5.51.08.png

实现上传图片(每次限制上传一张),删除图片,点击查看大图的操作。

<template>
 <div class="GroupPhotoUpload">
 <Content class="main_content">
      <div class="pic_upload">
        <div class="pic_upload_list" v-model="Lists">
          <div style="width: 88px;height: 88px;display: inline-block;"
               v-for="item in Lists" :key="item.imgName">
            <div class="upload">
              <img :src="item">
              <div class="upload-text">
                <span class="upload-text-span">{{item}}</span>
              </div>
              <div class="upload-list-cover">
                <Icon type="ios-eye-outline" @click.native="handleView(item)"></Icon>
                <Icon type="ios-trash-outline" @click.native="handleRemove(item)"></Icon>
              </div>

              <Modal :title="imgofurl" v-model="visible">
                <img :src="imgofurl" v-if="visible" style="width: 100%">
              </Modal>
            </div>
          </div>
        </div>
        <Upload
          ref="upload"
          :show-upload-list="false"
          type="drag"
          :max-size="1024"
          :on-exceeded-size="handleMaxSize"
          :data='uploadData'
          :format="['jpg','jpeg','png']"
          :on-success="handleSuccess"
          action="http://localhost:8080/list/group/1/image/imageUpload"
          style="display: inline-block;width:90px;">
          <div style="width: 90px;height:90px;line-height:90px;">
            <Icon type="camera" size="20"></Icon>
          </div>
        </Upload>
      </div>
    </Content>
</div>
</template>

script中data数据声明

 data(){
      return{
        imgofurl: '',
        photoName: '',
        visible: false,

        Lists:[],
        upspliceLists:[],
        productId:'',
        uploadData:{ //需要上传的其他参数
          sessionId:window.localStorage.getItem('sessionId'),
          type: 1,
        },

      }
    },

methods中的方法

 methods:{
      init(){
        const { photoArrSplit ,upSpliceLists,productId} = this.$route.params
        this.Lists =photoArrSplit
        this.upspliceLists = upSpliceLists
        // if (!this.upSpliceLists){
        //   this.upspliceLists = []
        // }
        // if (! this.Lists ){
        //   this.Lists = []
        // }
        this.productId = productId
        console.log('upspliceLists----0000---',this.upspliceLists)
      },
      async handleSuccess (res, file) {
        let that = this
        const {data} = res
        // that.Lists.push("http://xx.xx.xx.xxx/api/icon/" + data[0].filePath)
        that.Lists.push("http://xx.xx.xx.xx/group/1/image/findImgFile?fileId="+ data[0].rowId)
        that.upspliceLists.push(data[0].rowId)
        let upspliceString  = this.upspliceLists.join(',')
        // console.log('string',upspliceString)
        let params = Object.assign({},{voucherId:this.productId},{imageUrls:upspliceString})
        const response= await api.groupModifyProImg(params)
        const {retCode,retMsg} =response
        console.log('response',response)
      },
      // 执行方法
      handleMaxSize (file) {
        this.$Notice.warning({
          title: '文件大小超限',
          desc: '文件  ' + file.name + ' 太大,上传文件大小不能超过 1 M.'
        });
      },
      handleView (ph) {
        this.imgofurl = ph;
        this.photoName = ph;
        this.visible = true;
      },
      async handleRemove (data) {
        //通过ref的name查找父组件的引用
        //const fileList = this.$refs.upload.Lists;
        // this.$refs.upload.Lists.splice(Lists.indexOf(file), 1);
        // console.log("当前动作是删除文件操作:" + data);
        // this.$root.eventHub.$emit('itemphoto',ph);

        console.log('lists',this.Lists)
        var i = this.Lists.findIndex(
          function(value, index){
            return value == data;
          }
        );
        console.log("delete index :" + i );
        this.Lists.splice( i , 1 );
        let deletArr = data.split('=')
        var splitElement = this.upspliceLists.findIndex(
          function (value,index) {
            return value == deletArr[1]
          }
        )
        this.upspliceLists.splice(splitElement,1)
        console.log('this.upspliceLists---',this.upspliceLists)
        let upspliceString  = this.upspliceLists.join(',')
        const  res = await  api.groupDelImgFiles({fileIds:deletArr[1]})
        const {retMsg,retCode } =res
        if (retCode=="0"){
          let params = ''
          params =Object.assign({},{voucherId:this.productId},{imageUrls:upspliceString})
          const response= await api.groupModifyProImg(params)
          const {retCode,retMsg} =response
        }
        console.log("删除后:"+JSON.stringify(this.Lists));
      }
    },

css样式

<style scoped>
  .upload{
    width: 88px;
    height: 88px;
    display: inline-block;
    text-align: center;
    line-height: 60px;
    position: relative;
    margin-left: 4px;
  }
  .upload img{
    width: 88px;
    height: 88px;
    border: 1px solid ghostwhite;
  }
  .upload-text{
    display: none;
    bottom: 20px;
    height: 5px;
    line-height: 5px;
  }
  .upload-text-span{
    height: 8px;
    font-size: 8px;
  }
  .upload-list-cover{
    /*height: 100%;
        width: 100%;*/
    display: none;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background: rgba(0,0,0,0.4);
  }
  /* 鼠标移上去,Icon变为展示 */
  .upload:hover .upload-list-cover{
    display: block;
  }
  .upload-list-cover i{
    color: #fff;
    font-size: 20px;
    cursor: pointer;
    margin: 0px 6px;
  }
</style>

相关文章

  • jQuery+ajax实现简单的上传图片功能

    在前面的文章里面有写到,用vue上传图片的功能,vue-element-admin上传图片的功能:https://...

  • Vue+ElementUI+NodeJs图片上传

    一、将图片上传到服务器 1、添加图片上传框 在Vue组件的表单中添加图片上传框 其中: action:图片上传到服...

  • vue+koa做图片上传

    vue图片上传,使用elementui上传组件前端选择图片后,立即上传(也可以手动上传)后台koa监听请求路由,处...

  • vue 图片压缩

    vue 图片压缩 上传图片大于100* 1024 的用canvas 来压缩来解决 然后IOS拍照上传会有图片旋转的...

  • vue 上传图片

    上传图片,我们在做项目过程会经常遇到,在此,总结一下,方便以后工作,也可以为有兴趣的朋友提供一个思路,请看代码 注...

  • vue上传图片

  • Vue 上传图片

    去年公司做的微信端项目,用的Vue,现在有时间,总结下图片上传。 图片这块我用的是vant-ui,肯定要在项目中导...

  • Vue 图片上传

    addImg(e) { let inputDOM = this.$refs.inputer; this...

  • vue 上传图片

    闲暇时间回顾一下写的东西。vue上传图片。UI框架是iView ,element-ui原理相同先看下效果图 实现上...

  • vue上传图片

    action:上传图片的路径 name:后台接受参数名 handleAvatarSuccess:上传成功后的回调函...

网友评论

      本文标题:vue 上传图片

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