实现vue elmentUI图片本地上传

实现思路

后端代码

   //上传头像
   @PostMapping("/uplaod")
   public String upload(
           MultipartFile file
   ) {
//       System.out.println(file+"图片上次");
       //图片校验
       if (file.isEmpty()) {
           return "图片上传失败";
       }
       //可以自己加一点校验 例如上传的是不是图片或者上传的文件是不是png格式等等 这里省略
       //获取原来的文件名和后缀
       String originalFilename = file.getOriginalFilename();
//        String ext = "." + FilenameUtils.getExtension(orgFileName); --需要导依赖
       String ext = "."+ originalFilename.split("\\.")[1];
       //生成一个新的文件名(以防有重复的名字存在导致被覆盖)
       String uuid = UUID.randomUUID().toString().replace("-", "");
       String newName = uuid + ext;
       //拼接图片上传的路径 url+图片名
       ApplicationHome applicationHome = new ApplicationHome(this.getClass());
       String pre = applicationHome.getDir().getParentFile().getParentFile().getAbsolutePath() + "\\src\\main\\resources\\static\\images\\";
       String path = pre + newName;
       try {
           file.transferTo(new File(path));
       } catch (IOException e) {
           e.printStackTrace();
       }
       //数据库保存路径
       System.out.println(path);
       return path;
   }

前端代码 

      <el-form-item label="头像">
        <el-col :span="8">
          <el-upload class="avatar-uploader" action="http://localhost:10011/account-service/Inhabitant/uplaod"
            :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
            <img v-if="imageUrl" :src="imageUrl" class="avatar">
            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
          </el-upload>
        </el-col>
      </el-form-item>
   async handleAvatarSuccess(res,file) {
      this.imageUrl = URL.createObjectURL(file.raw);
      this.personageinfo.image=res
      console.info(res)

    },
    beforeAvatarUpload(file) {
      const isJPG = file.type === 'image/jpeg';
      const isLt2M = file.size / 1024 / 1024 < 2;

      if (!isJPG) {
        this.$message.error('上传头像图片只能是 JPG 格式!');
      }
      if (!isLt2M) {
        this.$message.error('上传头像图片大小不能超过 2MB!');
      }
      return isJPG && isLt2M;
    }

 注意点(解决方案)

 1. 如后端提示无权限创建 可以把文件先创建好

 2.前端401无权限 配置 head token 或直接配置网关

引用\[1\]中的代码是一个分页器组件的示例,其中使用了Vue.js和Element UI库来实现。该组件包含了上一页、下一页、总页数等功能,并通过v-for指令和数组来渲染中间的连续页码部分。 引用\[2\]中的代码是一个使用Express框架搭建的后端服务器,用于处理前端发送的请求并返回数据。其中通过读取一个名为images.json的文件来获取数据,并根据前端传递的pageNo和pageSize参数进行分页处理,最后将分页后的数据返回给前端。 引用\[3\]中的代码是一个Vue组件的示例,该组件包含了一个图片列表和一个自定义的分页器组件。在created钩子函数中,通过调用img方法来获取图片数据,并将数据赋值给imgs和total变量。同时,该组件还定义了一个getPages方法,用于处理分页器传递的当前页数,并通过调用img方法来更新图片数据。 综上所述,要实现文件切片上传的代码,你可以参考以上示例代码,并根据具体需求进行相应的修改和扩展。 #### 引用[.reference_title] - *1* *2* *3* [不用element-ui你会写分页器吗,并实现分段数据请求](https://blog.csdn.net/m0_51311990/article/details/127601162)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值