若依文件上传upload加回显一体化组件

这个写法只适合页面只有一个上传需求 多个上传会出现bug;后续再优化吧…

<template>

  <div style="display: flex;flex-direction: row;align-items: center;">
    <div v-for="item in fileList">
      <div :style="{width: imageHeight+'px', height: imageHeight+'px',position:'relative',marginLeft:'10px'}"
           v-if="isPng(item)">
        <el-image :style="{width: imageHeight+'px', height: imageHeight+'px'}"
                  :src="`${baseAPI}${item}`" :preview-src-list="[`${baseAPI}${item}`]">
        </el-image>
        <i class="el-icon-circle-close fs16"
           style="color: indianred;top: -5px;right: -5px;position: absolute;cursor: pointer;"
           @click="deleteItem(item)"></i>
      </div>

      <div v-else
           :style="{width: imageHeight+'px', height: imageHeight+'px',position:'relative',marginLeft:'10px'}">
        <el-link :href="`${baseAPI}${item}`" :underline="false"
                 target="_blank">
          <span style="font-size: 12px;color:skyblue;width:80px;height: 80px;">{{
              '...' + item.substring(item.length - 10)
            }}</span>
        </el-link>

        <i class="el-icon-circle-close fs16"
           style="color: indianred;top: -5px;right: -5px;position: absolute;cursor: pointer;"
           @click="deleteItem(item)"></i>
      </div>

    </div>
    <el-button style="height: 28px;" class="ml10" v-if="showUploadBt" type="primary"
               size="mini" @click="choosePicA">
      选择文件
    </el-button>

    <el-upload
      v-show="false"
      class="upload-demo"
      name="picFile"
      :headers="headers"
      :action="uploadImgUrl"
      :on-preview="handlePreviewA"
      :on-remove="handleRemoveA"
      :on-success="handleSuccessA"
      :before-remove="beforeRemoveA"
      multiple
      :limit="1"
      :on-exceed="handleExceedA"
      :file-list="fileListO">
      <el-button slot="trigger" id="chooseClickA" size="small" ref="uploadBt" type="primary">选取文件</el-button>
    </el-upload>

  </div>

</template>

<script>
import {getToken} from "@/utils/auth";

export default {
  name: "index",
  data() {
    return {
      uploadImgUrl: this.mBaseUploadUrl,
      fileListO: [],
      headers: {
        Authorization: "Bearer " + getToken()
      },
      baseAPI: process.env.VUE_APP_BASE_API,
    }
  },
  watch: {
    fileList(n, o) {
      console.log('watch')
      this.fileList = n;
    },
  },
  props: {
    //view choose
    showUploadBt: {
      type: Boolean,
      default: false
    },
    fileList: {
      type: Array,
      default: function () {
        return []
      }
    },
    imageHeight: {
      type: Number,
      default: 80
    }
  },
  methods: {
    handleRemoveA(file, fileList) {
      console.log(file, fileList);
    },
    handlePreviewA(file) {
      console.log(file);
    },
    handleSuccessA(response, file, fileList) {
      this.fileList.push(response)
      // 清空上传状态
      this.fileListO = []
    },
    handleExceedA(files, fileList) {
    	//可以忽略因为用不到每次只传一张图
      this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
    },
    beforeRemoveA(file, fileList) {
      return this.$confirm(`确定移除 ${file.name}?`);
    },
    choosePicA(e, type) {
      document.getElementById('chooseClickA').click();
    },
    //判断是不是图片
    isPng(str) {
      if (str) {
        var temp = {a: str}
        temp = temp.a.toLowerCase()
        return temp.indexOf('jpg') > -1 || temp.indexOf('png') > -1 || temp.indexOf('jpeg') > -1;
      }
      return false
    },
    deleteItem(item) {
      var idx = this.fileList.findIndex(itm => item == itm)
      if (idx > -1) this.fileList.splice(idx, 1);
      console.log(this.fileList, "SDFSD")
    },
  }
}
</script>

<style scoped>


</style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: el-upload 文件上传成功后,可以通过设置 `:on-success` 属性来指定上传成功后的回调函数,在回调函数中可以获取到上传成功后的文件信息,例如: ```html <el-upload class="upload-demo" action="/upload" :on-success="handleSuccess"> <el-button slot="trigger" type="primary">选取文件</el-button> <el-button slot="upload" type="success">上传文件</el-button> </el-upload> ``` ```js methods: { handleSuccess(response, file, fileList) { console.log(response); // 上传成功后服务器返回的响应数据 console.log(file); // 上传成功的文件对象 console.log(fileList); // 上传成功的文件列表 } } ``` 在 `handleSuccess` 方法中,可以根据上传成功后服务器返回的响应数据对页面进行回显。例如,如果服务器返回的是上传成功后的文件路径,可以将路径保存在组件的 data 中,并在页面中显示。 ```js data() { return { imageUrl: '' // 保存上传成功后的图片路径 } }, methods: { handleSuccess(response, file, fileList) { this.imageUrl = response.data.url; // 保存图片路径 } } ``` ```html <el-image :src="imageUrl" /> ``` ### 回答2: el-upload 是 Element UI 中的组件,用于上传文件。文件上传后,需要将上传的文件回显给用户。 要实现文件上传回显,我们需要借助 el-upload 中的 on-success 属性和 fileList 属性。首先,我们在组件的 data 中定义一个 fileList 数组用于存储上传成功的文件列表。 然后,在 el-upload 上设置 on-success 方法,该方法会在文件上传成功后被调用。我们可以在该方法内,将上传成功的文件信息添到 fileList 数组中,并根据需要对文件进行其他处理,例如显示文件名、文件大小等。 以下是一个简单的示例: <template> <div> <el-upload class="upload-demo" action="/upload" :on-success="handleSuccess" :file-list="fileList" > <el-button>点击上传文件</el-button> </el-upload> </div> </template> <script> export default { data() { return { fileList: [] // 存储上传成功的文件列表 }; }, methods: { handleSuccess(response, file) { this.fileList.push(file); // 将上传成功的文件信息添到 fileList 数组中 // 其他处理逻辑,例如显示文件名、文件大小等 } } }; </script> 通过以上代码,我们可以实现 el-upload 文件上传后的回显功能。当文件上传成功时,handleSuccess 方法会被调用,将文件信息添到 fileList 数组中。我们可以根据 fileList 数组的内容,在页面上展示上传的文件信息,如文件名、文件大小等。 ### 回答3: el-upload 是 Element UI 提供的一个文件上传组件,可以用来实现文件上传功能。在文件上传成功后,可以通过设置 `:on-success` 属性来调用上传成功的回调函数,从而实现文件回显。 文件回显的具体实现方式,可以通过在上传成功的回调函数中将上传成功的文件保存到一个变量中。然后,通过绑定这个变量到 el-upload 组件的 `:file-list` 属性,即可实现文件回显的效果。 在实际应用中,可以通过以下步骤来实现文件回显: 1. 创建一个变量来保存上传成功的文件列表,例如 `fileList`。 ``` javascript data() { return { fileList: [] // 用来保存上传成功的文件列表 } } ``` 2. 在 el-upload 组件中,将变量绑定到 `:file-list` 属性。 ``` html <el-upload :file-list="fileList" :on-success="handleUploadSuccess" > <!-- 其他代码 --> </el-upload> ``` 3. 在上传成功的回调函数 `handleUploadSuccess` 中,将上传成功的文件添到 `fileList` 中。 ``` javascript methods: { handleUploadSuccess(response, file, fileList) { // 保存上传成功的文件到 fileList this.fileList = fileList; } } ``` 通过以上步骤,就可以实现文件上传成功后的回显功能。当文件上传成功时,文件会显示在 el-upload 组件中,并可以通过组件提供的相关操作来预览、删除等操作。 需要注意的是,以上只是一种实现文件回显的方式,具体实现方式可以根据实际需求进行适当的调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值