vue+element ui 图片上传

代码实现:先在本地上传预览,点击保存按钮后将图片文件上传至后台服务器

<template>
  <div>
    <el-upload
      action="/upload"
      :on-change="uploadFile"
      :before-remove="removeFile"
      accept=".jpg,.jpeg,.png*"
      multiple
      :show-file-list="true"
      :file-list="fileList"
      list-type="picture"
      :auto-upload="false"
    >
      <el-button>+ 上传附件</el-button>
    </el-upload>
    <el-button @click="save">保存</el-button>
  </div>
</template>

<script>
import { uploadImg } from '@/api/upload'
export default {
  name: 'upload',
  data () {
    return {
      fileList: []
    }
  },
  methods: {
    // 附件上传
    uploadFile (file, fileList) {
      const isJPG = file.raw.type === 'image/jpeg'
      const isPNG = file.raw.type === 'image/png'
      const isLt2M = file.size / 1024 / 1024 < 2
      if (!isJPG && !isPNG) {
        fileList.splice(-1, 1)
        this.$message.error('附件只能为JPG/PNG格式!')
        return
      }
      if (!isLt2M) {
        fileList.splice(-1, 1)
        this.$message.error('附件大小不能超过2MB!')
        return
      }
      this.fileList.push({ url: file.url, file: file })
    },
    // 移除附件
    removeFile (file, fileList) {
      this.fileList = fileList
    },
    // 保存附件
    save () {
      let formData = new FormData()
      this.fileList.forEach((item) => {
        formData.append('files', item.file.raw)
      })
      uploadImg(formData).then(res => {

      }).catch(e => {
        this.$message.error(`error:${e.message}`)
      })
    }
  }
}
</script>

发送请求

import request from './index'

export function uploadImg (formData) {
  const result = request({
    url: '/upload/uploadImg',
    method: 'post',
    data: formData
  })
  return result
}

后台控制层接收请求

@PostMapping("/uploadImg")
public void uploadImg(@RequestPart(value = "files", required = false) MultipartFile[] files) {
    System.out.println(files);
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值