vue2 el-upload结合v-viewer实现图片上传预览

废话不多说直接上代码,只写了图片预览部分,上传部分代码可以根据业务自己书写

//main.js
import Viewer from 'v-viewer'
import 'viewerjs/dist/viewer.css'

Vue.use(Viewer, {
  defaultOptions: {
    zIndex: 9999, // 设置图片预览组件的层级,确保能在其他组件之上
  },
});


//upload组件

//图片集合根据自己业务定义fileList:[
//    {
        url:'xxxxxxxx'
//    }
//]
    <el-upload
      multiple
      action="#"
      list-type="picture-card"
      :on-success="handleUploadSuccess"
      :before-upload="handleBeforeUpload"
      :on-error="handleUploadError"
      :http-request="handleChange"
      :show-file-list="true"
      :file-list="fileList"
    >
      <i class="el-icon-plus"></i>
      <div
        style="width: 100%; height: 100%; text-align: center"
        slot="file"
        slot-scope="{ file }"
      >
        <div
          style="width: 100%; height: 100%"
          class="images"
          v-viewer="{ movable: false }"
        >
          <img style="width: 100%; height: 100%" :src="file.url" />
        </div>
        <span class="el-upload-list__item-actions">
          <span
            title="预览图片"
            class="el-upload-list__item-preview"
            @click="handlePictureCardPreview(file)"
          >
            <i class="el-icon-zoom-in"></i>
          </span>
          <span
            title="删除图片"
            class="el-upload-list__item-delete"
            @click="handleDelete(file)"
          >
            <i class="el-icon-delete"></i>
          </span>
        </span>
      </div>
    </el-upload>


//script
    // handleBeforeUpload
    // 可以在这里做上传之前判断、文件格式、文件大小等。。。
    handleBeforeUpload(){},
    // 上传图片
    handleChange(e) {
        var formData = new FormData();
        formData.append("file", e.file);
        // 上传接口
        comenUpload(formData).then((res) => {
        });
    },
    // handleUploadSuccess(){}
    handleUploadSuccess(){
        //上传成功回掉函数。。。。
    }
    // 预览
    handlePictureCardPreview(file) {
      let initialViewIndex; // 当前点击图片索引
      let images = this.fileList.map((item, index) => {
        if (file.url == item) {
          initialViewIndex = index;
        }
        return item.url;
      });
      // 图片预览核心操作
      this.$viewerApi({
        options: {
          initialViewIndex,
        },
        images,
      });
    },
    // 删除 根据不同业务自己写
    handleDelete(){}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue中使用el-upload组件来上传图片的步骤如下: 1. 在Vue组件中引入el-upload组件,并添加相应的props和data属性。 2. 在模板中使用el-upload标签,并设置相应的属性,例如action属性指定图片上传的接口地址,list-type属性指定展示上传图片的样式等。 3. 在methods中定义handleAvatarSuccess方法作为上传成功的回调函数,通过该方法获取服务端返回的图片路径,并将其绑定到imageUrl属性上。 4. 在methods中定义beforeAvatarUpload方法作为上传前的验证方法,用于验证图片格式和大小是否符合要求。 5. 在methods中定义handleRemove方法作为删除图片的回调函数,通过该方法从imageList中移除对应的图片对象。 6. 在methods中定义handlePictureCardPreview方法作为图片预览的回调函数,通过该方法设置预览图片的相关属性。 7. 在模板中使用v-if和v-else指令来根据是否有图片路径来展示或隐藏图片。 以上就是使用el-upload组件在Vue中上传图片的基本步骤。请根据实际情况进行相应的配置和调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue使用element-ui的el-upload上传图片至服务器,服务端使用的是node.js对接受的图片进行处理](https://blog.csdn.net/qq_49042268/article/details/122722395)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [vue el-upload实现图片和文字上传](https://blog.csdn.net/weixin_47978760/article/details/128042608)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值