elementUI 上传文件展示自定义的预览图

效果:展示自定义的预览图

image-20220307154340543

第一步:

<div slot="file" slot-scope="{file}">
  // 图片展示
  <img
       src="" alt=""
       :src="file.url"
       class="el-upload-list__item-thumbnail"
       >
  // 文件名称
  <p class="file-title" style="text-align: center;">{{file.name}}</p>
</div>

第二步:

init () {
  // 方法用于处理多个文件的回显展示问题
  function fileUrlList (fileUrl) {
    console.log(fileUrl, '查看文件')
    let fileUrlData = fileUrl.split(',')
    let fileNumber = fileUrlData.length
    let fileList = []
    for (let i = 0; i < fileNumber; i++) {
      fileList.push({name: fileUrlData[i].split('|')[0], url: fileUrlData[i].split('|')[1]})
      console.log(fileList, 999)
    }
    return fileList
  },
    //对获取的文件进行处理
  this.MissionBook = fileUrlList(data.achievement.achievementFile)
  // 遍历获取的文件个数
  let misbookLength = this.MissionBook.length
  // 对每一个文件进行处理的操作
  for (let i = 0; i < misbookLength; i++) {
    // 获取到文件的名称并保存
    let MissionBookName = this.MissionBook[i].name
    // 获取到文件的链接并保存
    let MissionBookUrl = this.MissionBook[i].url
    // 获取到文件链接的后缀信息
    let MissionBookHouzui = MissionBookUrl.split('.')[4]
    // 对各种后缀进行对应的处理,在这一步中对文件的 url 进行替换为自定义的图片,用于展示预览效果,并将真实的 url 自定义一个名称进行保存,便于后续使用
    switch (MissionBookHouzui) {
      case 'png':
      case 'jpg':
      case 'jpeg':
        this.MissionBook[i] = {
          name: MissionBookName,
          url: MissionBookUrl,
          downloadUrl: MissionBookUrl
        }
        break
      case 'xlsx':
      case 'xls':
        this.MissionBook[i] = {
          name: MissionBookName,
          url: require('@/assets/img/EXCEL.png'),
          downloadUrl: MissionBookUrl
        }
        break
      case 'pdf':
        this.MissionBook[i] = {
          name: MissionBookName,
          url: require('@/assets/img/Pdf.png'),
          downloadUrl: MissionBookUrl
        }
        break
      case 'doc':
      case 'docx':
        this.MissionBook[i] = {
          name: MissionBookName,
          url: require('@/assets/img/WORD.png'),
          downloadUrl: MissionBookUrl
        }
        break
    }
  }
}
Element UI 提供了一个名为 Element Upload 的组件,用于处理文件上传功能。在 Vue.js 中,你可以轻松地集成这个组件来实现文件上传并显示片。以下是基本步骤: 1. 引入组件:首先,在你的 Vue 文件中引入 Element UI 的 `el-upload` 组件,可以全局注册或者按需引入。 ```html <script src="https://unpkg.com/element-ui/lib/upload/index.js"></script> ``` 2. 创建组件模板:在需要上传和展示片的地方,创建一个 `el-upload` 元素,并设置必要的属性。 ```html <template> <el-upload :action="'/api/upload'" <!-- 这里替换为你实际的上传地址 --> :on-success="handleSuccess" :before-upload="beforeUpload" :file-list="list" <!-- 存储上传文件的信息列表 --> > <i class="el-icon-upload"></i> 选择文件 </el-upload> <!-- 如果你想预览片,添加 el-image 组件 --> <el-image v-for="item in list" :key="item.id" :src="item.url" <!-- 这里的 url 应该来自 file-list,包含片 URL --> :alt="item.name" ></el-image> </template> ``` 3. 定义方法:编写一些方法来控制上传过程和成功后的操作。 ```javascript <script> export default { data() { return { list: [], // 初始化为空数组,用于存储上传文件信息 }; }, methods: { beforeUpload(file) { return this.validateFile(file); // 自定义验证规则 }, handleSuccess(response, file) { if (response.status === 200) { let imageUrl = response.data.url; // 获取服务器返回的新片URL this.$set(this.list, this.list.length - 1, { ...file, url: imageUrl }); } }, validateFile(file) { // 验证文件大小、类型等,这里仅做简单示例 const maxSize = 5 * 1024 * 1024; // 5MB if (file.size > maxSize) { return false; } return true; }, }, }; </script> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值