SpringBoot会员管理系统之处理文件上传功能

温馨提示

成都创新互联-专业网站定制、快速模板网站建设、高性价比北林网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式北林网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖北林地区。费用合理售后完善,十载实体公司更值得信赖。

Spring Boot会员管理系统的中,需要涉及到Spring框架,SpringMVC框架,Hibernate框架,thymeleaf模板引擎。所以,可以学习下这些知识。当然,直接入门的话使用是没问题,但是,涉及到一些异常和原理的话可能就有些困难。

1. 前端部分

在前端部分addMember.html是通过form表单来提交会员的信息,其中就包括了图片上传功能(这里涉及了文件上传操作),表单部分代码如下:

选择头像文件
.......

这里有一个注意事项:因为涉及文件上传,所以在form中需要加入enctype="multipart/form-data",而且就是input中的name属性是与后端中的Controller映射方法的传入参数名是一一对应的。

2. 后端代码实现

后端中对于SpringMVC框架可以对于文件进行处理然后我们可以通过传入参数的方式来接收文件

2.1 Controller处理传入文件

代码如下:

@PostMapping("/addMember")
  public String addMember(Member member, String gradeName, MultipartFile icon, Map model) {
    //处理上传文件
    try {
      if (icon == null)//首先判断上传文件不为null
        return "error";
      if (icon.getOriginalFilename().equals("")) //如果上传文件的原名为空字符串,则证明使用了默认图像
        member.setIconPath("/assets/icon/common.jpg"); //设置为我们的默认图像路径
      else
        //这里通过了自己编写的文件上传工具类来处理上传的MultipartFile,文件名设置为通过UUID产生的字符串
        member.setIconPath(FileUploadUtil.upload(icon, "/assets/icon/", UUIDRandomUtil.get32UUID()));
    } catch (Exception e) {
      e.printStackTrace();
      return "error";
    }
    
    .......
    
    return "addMemberSuccess";
  }

2.2 FileUploadUtil工具类保存文件

在Controller的MultipartFile文件传入后需要进一步,转变为FIle并且保存到磁盘当中,所以我分开处理,把Controller的传入文件交给FileUploadUtil工具类来处理,具体的代码如下:

public class FileUploadUtil {
  /**
   * 上传文件
   * @param multipartFile multipartFile
   * @param prefixPath 前缀路径,相对于整个项目中的路径,路径最前面不用加入“/”
   * @param fileName 上传后的文件名
   * @return 上传后最终的相对路径+文件名
   * @throws Exception 有可能空指针异常和IO异常
   */
  public static String upload(MultipartFile multipartFile, String prefixPath, String fileName) throws Exception {
    //得出上传的绝对路径
    String uploadPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() +"/static"+ prefixPath;
    File file = new File(uploadPath);
    if (!file.exists())
      if (file.mkdirs())
        System.out.println("成功创建目录");
    //获取上传的后缀名
    String suffixName = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."));
    //新建最终确定的文件
    file = new File(uploadPath+fileName+suffixName);
    multipartFile.transferTo(file);
    return prefixPath+fileName+suffixName;
  }
}

上面中的ClassUtils是Spring提供的一个工具类,而调用方法getDefaultClassLoader().getResource("").getPath()是获取当前项目classpath下的路径。

以上便是本系统中关于文件上传的部分内容,该系统的源码以上传GitHub和下载源码

总结

以上所述是小编给大家介绍的Spring Boot 会员管理系统之处理文件上传功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对创新互联网站的支持!


标题名称:SpringBoot会员管理系统之处理文件上传功能
转载来于:http://hbruida.cn/article/jchcio.html