记录实现SpringMVC实现文件上传中出现的一些小问题
一开始采用最原始的文件上传试了一下,
1.最开始出现的问题是没有用代码对文件名进行设置,导致传来的是比如:uploads/C:\Users\Deskdop\Pictures\xxx.jpg
就报了错说xxxxx格式不正确,后来就用代码进行了约束。
2.后来没报错,正常跳转了,但我的myeclipse中uploads文件夹中没有上传的文件。。。以前晓得现在又给忘记了,图片是放在tomcat工程下,要想改成存在IDE的工作空间中需要去设置下。。。。。
/* * 传统方式实现图片上传 */ @RequestMapping(value = "fileupload") public String fileupload2(HttpServletRequest request) throws Exception { // 先获取到要上传的文件目录 String path = request.getSession().getServletContext().getRealPath("/uploads"); // 创建File对象,一会向该路径下上传文件 File file = new File(path); // 判断路径是否存在,如果不存在,创建该路径 if (!file.exists()) { file.mkdirs(); } // 创建磁盘文件项工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload fileUpload = new ServletFileUpload(factory); // 解析request对象 List<FileItem> list = fileUpload.parseRequest(request); // 遍历 for (FileItem fileItem : list) { // 判断文件项是普通字段,还是上传的文件 if (fileItem.isFormField()) { } else { // 上传文件项2. SpringMVC传统方式文件上传 // 获取到上传文件的名称 String filename = fileItem.getName(); // 文件后缀名 String extendName = filename.substring(filename.lastIndexOf("."), filename.length()); String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase(); filename = uuid + extendName; System.out.println(filename + ".."); // 上传文件 fileItem.write(new File(file, filename)); // 删除临时文件 fileItem.delete(); } } return "hello"; }
使用SpringMVC方式进行图片文件上传,
1.一开始写出现的问题报空错误,还是因为一开始没有用代码对上传的文件名做一个正确的约束,不过一下改过来了
/* * SpringMVC方式实现文件上传 */ @RequestMapping(value = "fileupload2") public String testResponseJson(MultipartFile upload,HttpServletRequest request) throws Exception{ System.out.println("SpringMVC方式的文件上传..."); // 先获取到要上传的文件目录 String path = request.getSession().getServletContext().getRealPath("/uploads"); // 创建File对象,一会向该路径下上传文件 File file = new File(path); // 判断路径是否存在,如果不存在,创建该路径 if(!file.exists()) { file.mkdirs(); } String filename = upload.getOriginalFilename(); String extendName = filename.substring(filename.lastIndexOf("."), filename.length()); String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase(); // 把文件的名称唯一化 filename = uuid + extendName; // 上传文件 upload.transferTo(new File(file,filename)); return "hello"; }
PS:吐槽下Myeclipse,最近卡的我要死,降低了我的学习效率,搞完老师这demo,下学期上手IDEA。。。