过了三天才想要写博客,这样不好,要改正
在做毕设的时候,用户发帖涉及到了文件上传的问题,在这里记录一下
背景:
在用户发帖的时候,用户只想发表文字postText,还有些用户想在发表postText的同时还发表一些图片,如何做?
上代码
不写的太细了,和流水账似的,挑重点记录一下。
1.前台的文件上传
本来想用form表单直接上传了,但是form提交时会刷新整个页面,但这不是我想要的,所以使用了ajax提交form表单。
利用ajax提交表单需要用到jquery.form.js这个包,网上有很多这个包的介绍
先看一下form表单的部分,很简单,只是单纯地记录一下。
1
重点来了,重点,重点,重点(重要的事情说三遍!)
ajax提交带文件上传的form表单
1 2 3
2.后台部分利用两个controller方法接收ajax提交的form
1 @RequestMapping("/sendPostFile") 2 public String sendPostFile(HttpSession session,HttpServletRequest req,String menuName,String postName,String postText,@RequestParam(value="file",required = false) MultipartFile file) throws IllegalStateException, IOException{ 3 //获取userId和userName 4 User user = (User)session.getAttribute("userSession"); 5 int userId = user.getUserId(); 6 String userName = user.getUserName(); 7 //传入表单中的menuName查出对应的menuId 8 Menu menu = sendPostService.selectMenuId(menuName); 9 int menuId = menu.getMenuId();10 //调用sendPostService的sendPost方法将帖子信息存入到数据库中11 int postId = sendPostService.sendPost(postName, menuId, userId, userName, postText);12 13 if(file != null ){14 //文件上传部分15 //照片名字16 String picFileName = StringUtils.newUUID();17 //上传地址18 String path =req.getRealPath("/assets/images/fileupload");19 File picFile = new File(path,picFileName);20 //先新建一个空白文件21 picFile.createNewFile();22 //保存文件23 file.transferTo(picFile);24 sendPostService.insertPicture(picFileName, userId, userName, postId);25 }26 return TIEZI;27 }28 @RequestMapping("/sendPostText")29 public String sendPostText(HttpSession session,HttpServletRequest req,String menuName,String postName,String postText) throws IllegalStateException, IOException{30 return sendPostFile(session, req, menuName, postName, postText, null);31 }
利用ajax提交带文件上传的form表单就这些了。
好好学习,天天向上!