Vue+SpringBoot实现图片上传MySQL数据库并使用

文章介绍了如何在Vue应用中使用ElementPlus组件`el-upload`实现用户上传图片到SpringBoot后端,以及后端如何接收文件并存储到MySQL数据库。前端展示了如何展示上传后的图片,后端则返回JSON数据供前端处理。
摘要由CSDN通过智能技术生成

上传:

Vue:

<el-upload
    action="http://localhost:8087/SickBay/image/user/update"
    :data="User"
    list-type="picture-card"
  >
    <el-icon><Plus /></el-icon>
  </el-upload>


<script>
import { Plus } from "@element-plus/icons-vue";
export default {
  data() {
    return {
      form: {},
      User: {
        username: "",
      },
    };
  },
  created() {
    this.User.username = localStorage.getItem("username");
  },
  methods: {},
};
</script>


<style>
.avatar-uploader .el-upload {
  border: 1px dashed #d9d9d9;
  border-radius: 6px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
}
.avatar-uploader .el-upload:hover {
  border-color: #409eff;
}
.avatar-uploader-icon {
  font-size: 28px;
  color: #8c939d;
  width: 178px;
  height: 178px;
  line-height: 178px;
  text-align: center;
}
.avatar {
  width: 178px;
  height: 178px;
  display: block;
}
</style>

MySQL

图片字段设置longblob

SpringBoot

Entity、Mapper、Service、Impl、XML照常写,省略。

Controller

package cn.itsource.sickbay.Controller;

import cn.itsource.sickbay.Common.R;
import cn.itsource.sickbay.Entity.User;
import cn.itsource.sickbay.Service.IuserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.math.BigInteger;

@RestController
@CrossOrigin(origins = "*")
@RequestMapping("/image")
public class ImageOptController {
    @Autowired
    private IuserService service;

    @PostMapping("/user/update")
    public R upload(@RequestParam("file") MultipartFile file, @RequestParam("username") String uname) {
        try {

            byte[] fileContent = file.getBytes();
            User user = new User();
            user.setImg(fileContent);
            BigInteger username = new BigInteger(uname);
            user.setUsername(username);
            return R.OK().setData(service.updateUserImage(user));
        } catch (Exception e) {
            e.printStackTrace();
            return R.OK().setCode(202).setMsg("上传失败");
        }
    }
}

至此,上传成功,可在数据库查看图片

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

前端显示

后端正常返回Json对象数据

1.使用图片的位置   :src

<el-avatar  :size="55"
            :src="Avatar"
            shape="circle"
            class="user-avatar"/>
<!-- <img :src="Avatar" alt="Image" /> -->

2.处理后端返回的数据

 FindInfo(this.username).then((res) => {
      let str = `data:image/jpg;base64,${res.data.data.img}`;//获取数据
      this.Avatar = str.replace(/[\r\n]/g, "");//去除空格,否则会导致图片碎开
      this.address = res.data.data.address;
      this.name = res.data.data.name;
    });

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值