自动上传

      <el-upload
  class="upload-demo"
  :on-success="handleSuccess"  //上传成功后的回调
  :before-upload="beforeUpload"
  action="/api/file/upload" //上传地址
  data                      // 请求参数
  accept=".jpeg, .jpg, .svg, .png, .webp"
  multiple
>
  <img :src="imgUrl" v-if="flag" style="width: 100%" />
  <i class="el-icon-upload"/>
  <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
  <div class="el-upload__tip" slot="tip" style="color:red">只能上传jpeg, jpg, svg, png,
    webp文件,且大小不超过1M
  </div>
</el-upload>
        
<script>
export default {
  data() {
    return {
      data: {
          "biz": user_avatar
      }
    }
  }
}
</script>
    

手动上传

      <el-upload
  class="upload-demo"
  :before-upload="beforeUpload"
  :http-request="upload" //手动上传
  drag
  action="#" //手动上传随遍填,不可为空
  accept=".jpeg, .jpg, .svg, .png, .webp"
  multiple
>
  <img :src="imgUrl" v-if="flag" style="width: 100%" />
  <i class="el-icon-upload"/>
  <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
  <div class="el-upload__tip" slot="tip" style="color:red">只能上传jpeg, jpg, svg, png,
    webp文件,且大小不超过1M
  </div>
</el-upload>

async upload() {
      const formData = new FormData()
      formData.append('file', this.file)
      formData.append('biz', 'user_avatar')
      await changeAvatar(formData).then(res => {
        this.flag = true
        this.form.avatar = res.data
        this.imgUrl = res.data
      })
    },
    

上传前更改文件名

      /**
 先获取到源文件的后缀名,然后新建一个文件,将文件名改为时间戳加后缀名,防止名称重复,最后把新文件作为参数进行上传
**/
beforeUpload(file) {
      const fileExtension = file.name.split('.').pop().toLowerCase()
      const timeStamp = new Date().getTime()
      const copyFile = new File([file], `${timeStamp}` + '.' + fileExtension)
      this.file = copyFile
    },
    

声明

作者: liyao

版权:本博客所有文章除特别声明外,均采用CCBY-NC-SA4.O许可协议。转载请注明!

最后更新于 2026-02-18 18:15 history