弹簧引导会员管理系统的中,需要涉及到春天框架,SpringMVC框架,Hibernate框架,thymeleaf模板引擎,所以,可以学习下这些知识。当然,直接入门的话使用是没问题,但是,涉及到一些异常和原理的话可能就有些困难。
在前端部分addMember.html是通过形式表单来提交会员的信息,其中就包括了图片上传功能(这里涉及了文件上传操作),表单部分代码如下:
& lt;形式th: action=癅 {/admin/addMember}”method=" post " enctype="多部分/格式" id=癮ddMember”比; & lt; div class="文件域输入字段”比; & lt; div类=癰tn”比; & lt; span>选择头像文件& lt;/span> & lt;输入id="文件" type="文件" name=" iconPath多个="占位符=把≡裎募苯邮?巴枷?*”比; & lt;/div> & lt; div类=癴ile-path-wrapper”比; & lt; !——& lt;输入类=拔募肪堆橹ぁ崩嘈?拔谋尽闭嘉环?"上传src=" https://www.yisu.com/zixun/assets/iconPath/common.jpg " class=" img-responsive img-thumbnail”/比; & lt;/div> & lt; !——头像文件上传预览——比; & lt; script> 函数Id (Id) { 返回. getelementbyid (id); } 函数changeToop () { var Id文件=(“文件”); 如果(file.valuehttps://www.yisu.com/zixun/===' ') {//设置默认图片 Id (myimg) .src=' https://www.yisu.com/zixun/assets/iconPath/common.jpg '; 其他}{ preImg(“文件”、“myimg”); } }//获取输入[文件]图片重要的url 函数getFileUrl(文件标识){ var url; var Id文件=(文件标识); var剂=navigator.userAgent; 如果(agent.indexOf (“MSIE”)在=1){ url=file.value; }else if (agent.indexOf(“火狐”)在0){ url=window.URL.createObjectURL (file.files.item (0)); }else if (agent.indexOf(“铬”)在0){ url=window.URL.createObjectURL (file.files.item (0)); } 返回的url; }//读取图片后预览 函数preImg(文件标识,imgId) { var imgPre=Id (imgId); imgPre。src=https://www.yisu.com/zixun/getFileUrl(文件标识); }> 脚本
这里有一个注意事项:因为涉及文件上传,所以在表格中需要加入<代码> enctype=岸嗖糠?格式”> 代码,而且就是输入中的名字属性是与后端中的控制器映射方法的传入参数名是一一对应的。
后端中对于SpringMVC框架可以对于文件进行处理然后我们可以通过传入参数的方式来接收文件
2.1控制器处理传入文件
代码如下:
@PostMapping ("/addMember”) 公共字符串addMember(成员成员,字符串gradeName MultipartFile图标,Map<字符串,Object>模型){//处理上传文件 尝试{ 如果(图标==null)//首先判断上传文件不为null 返回“错误”; 如果(icon.getOriginalFilename () .equals(" "))//如果上传文件的原名为空字符串,则证明使用了默认图像 member.setIconPath(“/资产/图标/common.jpg”);//设置为我们的默认图像路径 其他的//这里通过了自己编写的文件上传工具类来处理上传的MultipartFile,文件名设置为通过UUID产生的字符串 member.setIconPath (FileUploadUtil。上传(图标“/资产/图标/UUIDRandomUtil.get32UUID ())); }捕捉(异常e) { e.printStackTrace (); 返回“错误”; } …… 返回“addMemberSuccess”; }
2.2 FileUploadUtil工具类保存文件
在控制器的MultipartFile文件传入后需要进一步,转变为文件并且保存到磁盘当中,所以我分开处理,把控制器的传入文件交给FileUploadUtil工具类来处理,具体的代码如下:
公开课FileUploadUtil {/* * * 上传文件 * @param multipartFile multipartFile * @param prefixPath前缀路径,相对于整个项目中的路径,路径最前面不用加入“/? * @param文件名上传后的文件名 * @return上传后最终的相对路径+文件名 * @throws异常有可能空指针异常和IO异常 */prefixPath公共静态字符串上传(MultipartFile MultipartFile,字符串,字符串文件名){抛出异常//得出上传的绝对路径 字符串uploadPath=ClassUtils.getDefaultClassLoader () .getResource (" ") .getPath() + "/静态”+ prefixPath; 文件文件=新文件(uploadPath); 如果(! file.exists ()) 如果(file.mkdirs ()) System.out.println(“成功创建目录”);//获取上传的后缀名 字符串suffixName=multipartFile.getOriginalFilename () .substring (multipartFile.getOriginalFilename () .lastIndexOf (“。”);//新建最终确定的文件 文件=新文件(uploadPath +文件名+ suffixName); multipartFile.transferTo(文件); 返回prefixPath +文件名+ suffixName; } }春天的引导会员管理系统之处理文件上传功能