后端图像上传

后端实现头像上传

说明

主体思路,前端写一个input标签,将input标签隐藏,将上传的图片传给后端,后端接收后,保存在本地,将文件的地址存储到数据库,前端获取到数据库的图片路径,再加载图片。

代码

// controller层,因为是文件,用MultipartFile接收
    @PostMapping(value = "/update_portrait")
    public Object updatePortrait(@RequestParam("file") MultipartFile file, String userId) throws IOException {
        return mService.updatePortrait(file,userId);
    }
    
//service层
  RestResult updatePortrait(MultipartFile file,String userId) throws IOException;
  
//serciceImp层
    @Override
    public RestResult updatePortrait(MultipartFile file, String userId) throws IOException {
        System.out.println("##################上传开始");
        //获取文件名
        String originalFilename = file.getOriginalFilename();
        //获取后缀,lastIndexOf可返回指定字符串值最后出现的位置,对大小写敏感,没有值时返回-1。
        String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
        //保存自定义的文件名。UUID.randomUUID()直接生成的ID中存在"_",如果不需要可用replace()方法去掉。
        String dFileName = UUID.randomUUID() + substring;
        //保存路径
        //springboot 默认情况下只能加载 resource文件夹下静态资源文件
        //生成保存文件,
        File uploadFile = new File("F:\\picture\\" + dFileName);
        System.out.println("##########uploadFile=" + uploadFile);
        //将上传文件保存到路径
        try {
            //使用绝对路径且文件夹必须已经存在
            file.transferTo(uploadFile);
        } catch (IOException e) {
            e.printStackTrace();
        }

        List<UserEntity> tableUsers = userEntityRepository.findByUid(userId);
        //        判断用户是否重复
        if (tableUsers.size() <= 0) {

            return RestResult.error(ERROR_SERVER_ERROR);
        }
        UserEntity userEntity = tableUsers.get(0);
        userEntity.setPortrait(net_portrait + dFileName);
        userEntityRepository.save(userEntity);
        System.out.println("############结束上传!!!!");
        return RestResult.ok("上传成功!");
    }


同事项目写的文件上传代码,借鉴一下

@Override
pubulic void uploadFile(MultipartFile resoucefile){
		try{
				String originalFilename = resoucefile.getOriginalFilename();
				log.info("file name is :"+originalFilename );
				//这个uploadURL是在yml文件定义的绝对路径,是提前写的,是D:\\picture\\。为了直观我直接用字符串定义了。
				String uploadURL= "D:\\picture\\";
				File targetFile = new File(uploadURL);
				if(!targetFile .exists()){
						targetFile.mkdir();
				}
				FileOutputStream out  = new FileOutputStream(url);
				out.write(resoucefile.getBytes());
				out.flush();
				out.close();
		}catch(Exception e){
			e.printStackTrace();
	}
}
上一篇:TreeSet之定制排序和自然排序


下一篇:设计模式学习-使用go实现外观模式