上传文件
首先使用SpringMVC的上传图片功能前 必须要加入必要的jar依赖 还有spring的配置文件里面也要配置一点东西,,
今天我做的图片上传,由于用的不是自己搭的架构,所以报了一个乱七八糟的错,后来上网查到缺少的依赖包,下面这两个包上传文件一定要有的
之后还需要在spring的配置文件中添加以下配置:
<!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8" /> </bean>
下面是一个普通上传文件的form表单:
<form action="${ctx }/post/updateLoad" method="post" enctype="multipart/form-data"> 上传图片或文件:<input type="file" name="fileName"/> <input type="submit" value="上传"/> </form>
action代码:
/** * 图片上传 * * @throws IOException */ @RequestMapping(value = "/post/updateLoad", method = RequestMethod.POST) public String updateLoad(@RequestParam("fileName") MultipartFile idimg,HttpServletRequest request, ModelMap model) throws IOException { String abc = idimg.getOriginalFilename(); //获取上传的文件名字如:123.jpg // 判断文件是否为空 if (!idimg.isEmpty()) { try { // 文件保存路径 filePath: 服务器路径 // String filePath =request.getSession().getServletContext().getRealPath("/") + // idimg.getOriginalFilename();
// 也可以获取本电脑系统的临时路径 temporaryPath的值为:C:\Users\admin\AppData\Local\Temp\
// String temporaryPath= System.getProperty("java.io.tmpdir");
// 本地路径 String path = "C:\\postImage\\" + "cover\\"; boolean flag = makeDirs(path); // 转存文件 idimg.transferTo(new File(path + idimg.getOriginalFilename())); } catch (Exception e) { e.printStackTrace(); } } return "addPost"; } //创建文件夹 public static boolean makeDirs(String filePath) { if (filePath == null || filePath.isEmpty()) { return false; } File folder = new File(filePath); boolean flag=folder.mkdirs(); return flag; }
实现多文件上传:
@DataSource(name = DataSource.master) @ResponseBody @RequestMapping("/upload") public APIResult addUser(@RequestParam("fileName") CommonsMultipartFile[] files,@RequestParam("userId") Long userId,HttpServletRequest request) { for (int i = 0; i < files.length; i++) { System.out.println("fileName---------->" + files[i].getOriginalFilename()); if (!files[i].isEmpty()) { int pre = (int) System.currentTimeMillis(); try { // 拿到输出流,同时重命名上传的文件 FileOutputStream os = new FileOutputStream( "H:/" + new Date().getTime() + files[i].getOriginalFilename()); // 拿到上传文件的输入流 FileInputStream in = (FileInputStream) files[i].getInputStream(); // 以写字节的方式写文件 int b = 0; while ((b = in.read()) != -1) { os.write(b); } os.flush(); os.close(); in.close(); int finaltime = (int) System.currentTimeMillis(); System.out.println(finaltime - pre); } catch (Exception e) { e.printStackTrace(); System.out.println("上传出错"); } } } return null; }

浙公网安备 33010602011771号