vue3使用el-upload(elmentplus)更改用户头像,用到了七牛云,0积分下载资源,见文末

使用el-upload上传用户头像 0积分下载资源,见文末

效果图
点击头像进行选择并修改

前端代码

 <el-upload
     class="avatar-uploader"
     :action="uploadUrl"
      accept=".jpg,.png,.jpeg"
      show-file-list="false"
      :on-success="handleAvatarSuccess"
      :before-upload="beforeAvatarUpload"
   >
      <el-image v-if="avator" :src="avator" class="avatar" />
      <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
  </el-upload>

//ts部分
export default {
  setup() {
    const store = useStore();

    const avator = ref(store.state.avator);//图片显示
    //可以将userid换成自己的参数
    const uploadUrl = ref("/api/upload/images?userid=" + store.state.userid);

    const handleAvatarSuccess: UploadProps["onSuccess"] = (
      response,
      uploadFile
    ) => {
      avator.value = URL.createObjectURL(uploadFile.raw!);
      //更新sessionStorage和vuex
      sessionStorage.setItem("avator", avator.value);
      store.state.avator = avator.value;
    };
    const beforeAvatarUpload: UploadProps["beforeUpload"] = (rawFile) => {
      if (rawFile.size / 1024 / 1024 > 2) {
        ElMessage.error("图片不能超过2MB!");
        return false;
      }
      return true;
    };

    return {
      avator,
      uploadUrl,
      handleAvatarSuccess,
      beforeAvatarUpload,
    };
  },
};

后端代码

用到了七牛云 QiniuUtil工具包 文件上传的配置见章节末

@RestController
@RequestMapping("/api/upload")
public class UploadController {

    @Resource
    private QiniuUtil qiniuUtil;
    @Resource
    private ConsumerServiceImpl consumerService;

    /**
     * 头像文件上传
     *
     * @param file
     * @return
     * @throws Exception
     */
    @PostMapping("/images")
    public Result<?> uploadImages(@RequestParam("userid") Integer userid, MultipartFile file) throws Exception {
//        Result<?> result = new Result<>();
        String url;
        int flag;//更新成功标志
        if (file == null) {
            return Result.error("405", "上传错误", null);
        }
        try {
            byte[] bytes = file.getBytes();//将文件转化为 byte[] 格式
            String name = UUID.randomUUID().toString().replace("-", "");//更改后的文件名
            String ext = FilenameUtils.getExtension(file.getOriginalFilename());//获取文件后缀
            String ur = name + "." + ext;
            url = qiniuUtil.uploadBybyte(bytes, ur);

            //将url更新为该用户的头像,更新数据库
            flag = consumerService.updateAvator(userid, url);

            if (flag == 1) {
                return Result.success(url);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        //System.out.println(url + " 图片地址");
        return Result.error("405", "更新失败", null);

    }
}

上传文件到七牛云,后端代码,0积分下载

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值