vue+element ui 文件上传之文件缩略图缩略图

这篇具有很好参考价值的文章主要介绍了vue+element ui 文件上传之文件缩略图缩略图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件缩略图按官方文档说的是使用 scoped-slot 去设置缩略图模版。且需要上传的是图片,因为有预览等功能,如果上传的不是图片,会显示不出来。

<el-upload
  :action="uploadFileServiceUrl"
  list-type="picture-card"
  :on-success="(response, file, fileList) => {handleSuccess(response, file, fileList)}"
  :file-list="fileList"
  accept="image/jpg,image/jpeg,image/png" 
  :before-upload="handleBeforeUpload"
  ref="upload"
  :auto-upload="true"
>
  <i slot="default" class="el-icon-plus"></i>
  <div slot="file" slot-scope="{file}">
    <img class="el-upload-list__item-thumbnail" :src="file.url" alt />
    <span class="el-upload-list__item-actions">
      <span
        class="el-upload-list__item-preview"
        @click="handlePictureCardPreview(file)"
      >
        <i class="el-icon-zoom-in"></i>
      </span>
      <!-- <span
        v-if="!disabled"
        class="el-upload-list__item-delete"
        @click="handleDownload(file)"
      >
        <i class="el-icon-download"></i>
      </span> -->
      <span
        v-if="!disabled"
        class="el-upload-list__item-delete"
        @click="handleRemove(file)"
      >
        <i class="el-icon-delete"></i>
      </span>
    </span>
  </div>
</el-upload>
<!-- 图片预览 -->
<el-dialog :visible.sync="dialogVisible">
  <img width="100%" :src="dialogImageUrl" alt />
</el-dialog>

这里设置了图片的格式等,用户在选择的时候,会自动校准图片格式,官方文档中提供了before-upload方法,可以防止用户在选择文件的时候使用查看所有文件的方式。

vue+element ui 文件上传之文件缩略图缩略图

vue+element ui 文件上传之文件缩略图缩略图

 完整代码:

<el-upload
  :action="uploadFileServiceUrl"
  list-type="picture-card"
  :on-success="(response, file, fileList) => {handleSuccess(response, file, fileList)}"
  :file-list="fileList"
  accept="image/jpg,image/jpeg,image/png" 
  :before-upload="handleBeforeUpload"
  ref="upload"
  :auto-upload="true"
>
  <i slot="default" class="el-icon-plus"></i>
  <div slot="file" slot-scope="{file}">
    <img class="el-upload-list__item-thumbnail" :src="file.url" alt />
    <span class="el-upload-list__item-actions">
      <span
        class="el-upload-list__item-preview"
        @click="handlePictureCardPreview(file)"
      >
        <i class="el-icon-zoom-in"></i>
      </span>
      <!-- <span
        v-if="!disabled"
        class="el-upload-list__item-delete"
        @click="handleDownload(file)"
      >
        <i class="el-icon-download"></i>
      </span> -->
      <span
        v-if="!disabled"
        class="el-upload-list__item-delete"
        @click="handleRemove(file)"
      >
        <i class="el-icon-delete"></i>
      </span>
    </span>
  </div>
</el-upload>
<!-- 图片预览 -->
<el-dialog :visible.sync="dialogVisible">
  <img width="100%" :src="dialogImageUrl" alt />
</el-dialog>
export default {
  name: "",
  data() {
    submitForm4: {
      fileIdList: []
    },
    uploadFileServiceUrl: 'xxx', // 文件上传的接口地址
  },
  methods: {
    handleSuccess(response, file, fileList){
      response.data.forEach((item,index) => {
        this.submitForm4.fileIdList.push(item.fileID)
      })
      
    },
    // 判断上传的是否为图片
    handleBeforeUpload(file) {
      var img = file.name.substring(file.name.lastIndexOf('.') + 1)
      const suffix = img === 'jpg'
      const suffix2 = img === 'png'
      const suffix3 = img === 'jpeg'
      // const isLt1M = file.size / 1024 / 1024 < 1;
      if (!suffix && !suffix2 && !suffix3) {
          this.$message.error("只能上传图片!");
          return false
      }
      // 可以限制图片的大小
      // if (!isLt1M) {
      //     this.$message.error('上传图片大小不能超过 1MB!');
      // }
      return suffix || suffix2 || suffix3
    },
    handleRemove(file,fileList) {
      const uploadFiles = this.$refs.upload.uploadFiles;
      for (let i in uploadFiles) {
        if (file.url === uploadFiles[i].url) {
          uploadFiles.splice(i, 1);
        }
      }
      // console.log(uploadFiles,'uploadFilesuploadFiles')
      this.getFileID(uploadFiles)
    },
    getFileID(fileList){
      let deleFileId = []
      fileList.forEach((item,index) => {
        console.log(index,item.response.data)
        item.response.data.forEach((item,index) => {
          // console.log(index,item)
          deleFileId.push(item.fileID)
          
        })
      })
      this.submitForm4.fileIdList = deleFileId

    },
    handlePictureCardPreview(file) {
      this.dialogImageUrl = file.url;
      this.dialogVisible = true;
    },
  }
}

这里删除的时候需要注意的是,缩略图中,删除时没有整体的fileList参数,所以需要使用ref来获取所有上传的图片列表,这样子在删除的时候,就可以确定用户删除的,是哪一张图片了。

最后,附上删除时利用ref获取到的数组格式

vue+element ui 文件上传之文件缩略图缩略图文章来源地址https://www.toymoban.com/news/detail-506208.html

到了这里,关于vue+element ui 文件上传之文件缩略图缩略图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3 + Element UI 实现文件上传弹出框

    Vue3 + Element UI 实现文件上传 实现如下: 1.首页添加按钮点击弹出文件框 给dialog设置传参 展示对话框,设置 页面部分代码如下: 语法部分代码如下: 2.弹出框 页面部分代码如下: 语法部分代码如下 上述实现弹出框上传文件事件,当文件上传后需要更新文件管理展示页面,

    2024年02月11日
    浏览(48)
  • vue+element ui 关于表格中多行增加上传文件操作

    先创建一个表格标签,表格中需要先写上上传文件的组件 在data中定义一个表格数组,数组中的fileIdList是我需要存储的信息,可自行参考 表格多行上传的难点在于,需要把上传的文件和表格中的行一一对应,所以在handleSuccess和handleRemove方法中多传入了一个scope,scope参数是自

    2024年02月14日
    浏览(33)
  • Vue Element ui Upload组件在上传文件时,动态切换 action上传路径

    当我们在使用 Element ui,Upload组件时,官网默认的基础配置如下 现在的需求是,如果页面只有 一个 el-upload组件,需要上传的文件,根据不同的类型,切换不同的action 上传路径。 首先我这里选择,通过调用 before-upload 上传文件之前的钩子函数,函数接收一个参数,就是上传的

    2024年02月11日
    浏览(30)
  • vue结合element ui 实现多个文件上传、并删除不符合条件的

    多个文件上传的核心就是将文件append进FormData的实例中,向后台请求时将实例对象传送过去。  多个文件上传,传送的数据: html部分: js部分(this.$request是我自定义的请求方式,大家可以根据自身需要来调整): 1. 我们想要的效果是手动一次性上传多个文件,但是文件选取

    2024年03月20日
    浏览(47)
  • vue+element ui完成头像上传功能(文件转base64)以及自定义布局。

    1、自定义布局       查阅element ui的头像上传功能,发现是点击头像位置才可以上传,那我们可不可以点击头像外部的按钮来上传头像呢? element ui效果图 :                                                    目标效果 :                            在实现

    2024年01月18日
    浏览(33)
  • Element-UI官方文档阅读笔记(VUE)—持续更新中····

    本人前端新手一枚,目前工作中接触Element-UI较多,但其中很多组件布局什么的都不是很清楚。 所以想稍微花点时间简单过一遍Element-UI官方文档,并作以记录。其中有什么不对的地方,还请各位路过的大佬不吝赐教! 以下内容按element-ui官方文档结构进行整理 Layout布局主要使

    2024年02月04日
    浏览(35)
  • element ui表单上传文件

    实现提交表单和上传文件同步进行,把表单数据作为upload组件上传附带的额外参数。 methods:  

    2024年02月16日
    浏览(33)
  • Vue上传图片功能【element ui】

    路径那里是axios请求根路径和接口文档里面后端给的路径拼接的 只要看到这个就证明这张图片并没有上传成功 我已经通过axios的request拦截器为每一个请求都挂载了一个Authorization也就是token,挂载了这个也就说明每一个axios请求都会追加一个token 但是为什么配置了token还是显示

    2024年02月12日
    浏览(42)
  • 优化VUE Element UI的上传插件

    默认ElmentUI的文件列表只有一个删除按钮,我需要加预览、下载、编辑等,就需要优化显示结果。 优化后没用上传进度条,又加了一个进度条效果 代码

    2024年02月09日
    浏览(35)
  • element ui通过formdata上传文件

    使用场景:选取好excel文件后,再把导入的excel文件和参数同时提交给服务器,需要用到文件的手动上传,但是直接拷贝官网的demo会出现问题,下面会具体说明要注意的问题点。???直接上代码:index.vueel-form ref=“importList” :rules=“ImportRules” :model=“importList” label-positio… 选取

    2024年02月01日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包