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

本文展示了如何在Vue应用中使用el-upload组件实现用户头像上传功能,结合七牛云服务进行文件存储。前端部分包括组件配置、上传成功回调和文件大小限制。后端使用Java实现,通过七牛云工具包上传文件,并更新用户头像信息。代码中包含关键的前端和后端实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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积分下载

el-upload是一个用于上传图片的组件,而七牛云是一种云存储服务。你可以通过将这两者结合使用,实现将图片上传到七牛云的功能。 具体的步骤如下: 1. 首先,你需要从后台获取七牛云的token,这个token将用于上传图片到七牛云。你可以通过调用后端提供的接口,传入AccessKey、SecretKey和Bucket等信息来获取token。 2.el-upload组件中,你需要配置action属性为https://upload.qiniup.com,这是七牛云存储区域的上传地址。不同的七牛云存储区域可能会有不同的地址,请根据自己使用七牛云服务器存储区域来确定具体的地址。 3. 配置el-upload组件的其他参数,如class、list-type、file-list等。这些参数可以根据自己的需求进行设置。 4.el-upload组件中,你可以监听onChange事件,以便在图片上传完成后执行相应的操作。比如,你可以在该事件中获取返回的图片路径,并将其放入el-upload组件中进行显示。 5. 当图片上传成功后,你可以在el-upload组件中使用on-success事件来回显上传的图片。你需要将回显地址配置为你在七牛云上配置的回显地址,具体地址可以参考七牛云的官方文档。 6. 最后,你可以根据需要配置其他的el-upload组件参数,如before-upload、on-remove等。 总结起来,通过el-upload组件和七牛云的配合,你可以实现在前端上传图片到七牛云,并在上传成功后进行回显操作。详情可以参考提供的引用内容中的代码和注意点。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vueel-upload上传图片到七牛的示例代码](https://download.csdn.net/download/weixin_38675465/13977470)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [elementUI el-upload组件直接上传到七牛云(亲测可用)](https://blog.csdn.net/DLGDark/article/details/126763197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [el-upload上传文件到七牛云](https://blog.csdn.net/qq_42157868/article/details/107286616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值