servlet中使用commons-fileupload实现图片上传
2014-11-23 21:55
447 查看
1、引入commons-fileupload.jar包
2、html中form表单必须声明enctype="multipart/form-data"
[align=left][/align]
[align=left] [/align]
2、html中form表单必须声明enctype="multipart/form-data"
<form action="<c:url value='/admin/AdminAddBookServlet'/>" enctype="multipart/form-data" method="post" id="form"> </form>
3、servlet中 <pre name="code" class="java">public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); /* * 1. commons-fileupload的上传三步 */ // 创建工具 FileItemFactory factory = new DiskFileItemFactory(); /* * 2. 创建解析器对象 */ ServletFileUpload sfu = new ServletFileUpload(factory); sfu.setFileSizeMax(80 * 1024);//设置单个上传的文件上限为80KB /* * 3. 解析request得到List<FileItem> */ List<FileItem> fileItemList = null; try { fileItemList = sfu.parseRequest(request); } catch (FileUploadException e) { // 如果出现这个异步,说明单个文件超出了80KB error("上传的文件超出了80KB", request, response); return; } /* * 把上传的图片保存起来 * > 获取文件名:截取之 * > 给文件添加前缀:使用uuid前缀,为也避免文件同名现象 * > 校验文件的扩展名:只能是jpg * > 校验图片的尺寸 * > 指定图片的保存路径,这需要使用ServletContext#getRealPath() * > 保存之 * > 把图片的路径设置给Book对象 */ // 获取文件名 FileItem fileItem = fileItemList.get(1);//获取大图 String filename = fileItem.getName(); // 截取文件名,因为部分浏览器上传的绝对路径 int index = filename.lastIndexOf("\\"); if(index != -1) { filename = filename.substring(index + 1); } // 给文件名添加uuid前缀,避免文件同名现象 filename = CommonUtils.uuid() + "_" + filename; // 校验文件名称的扩展名 if(!filename.toLowerCase().endsWith(".jpg")) { error("上传的图片扩展名必须是JPG", request, response); return; } // 校验图片的尺寸 // 保存上传的图片,把图片new成图片对象:Image、Icon、ImageIcon、BufferedImage、ImageIO /* * 保存图片: * 1. 获取真实路径 */ String savepath = this.getServletContext().getRealPath("/book_img"); /* * 2. 创建目标文件 */ File destFile = new File(savepath, filename); /* * 3. 保存文件 */ try { fileItem.write(destFile);//它会把临时文件重定向到指定的路径,再删除临时文件 } catch (Exception e) { throw new RuntimeException(e); } // 校验尺寸 // 1. 使用文件路径创建ImageIcon ImageIcon icon = new ImageIcon(destFile.getAbsolutePath()); // 2. 通过ImageIcon得到Image对象 Image image = icon.getImage(); // 3. 获取宽高来进行校验 if(image.getWidth(null) > 350 || image.getHeight(null) > 350) { error("您上传的图片尺寸超出了350*350!", request, response); destFile.delete();//删除图片 return; } // 把图片的路径设置给book对象 book.setImage_w("book_img/" + filename); // 调用service完成保存 book.setBid(CommonUtils.uuid()); BookService bookService = new BookService(); bookService.add(book); // 保存成功信息转发到msg.jsp request.setAttribute("msg", "添加图书成功!"); request.getRequestDispatcher("/adminjsps/msg.jsp").forward(request, response); }
[align=left][/align]
[align=left] [/align]
相关文章推荐
- Servlet使用commons-fileupload实现文件上传
- java通过commons-fileupload实现多张图片的上传(servlet)
- 使用commons-fileupload实现表单提交上传,并取出参数,解决了乱码
- 使用commons-fileupload实现单个和多个文件上传
- 使用commons-fileupload实现文件(doc、pdf)上传,提取表单参数并解决中文乱码
- JSP使用commons-fileupload实现文件上传
- 使用commons-fileupload.jar实现图片上传的一个小例子
- 使用commons-fileupload组件实现文件上传
- 使用Apache的commons-fileupload和commmons-io组件实现文件上传
- 使用Commons-fileupload组件和jstl实现文件上传
- Struts中使用commons-fileupload实现上传例子
- 使用commons-fileupload实现上传
- 使用commons-fileupload上传简单实现
- 在Servlet中使用开源fileupload包实现文件上传功能 2010-08-05 23:38:25 标签:Servlet 文件上传 fileupload包 反编译 JD-GUI 原创作品,允许
- 使用ServletFileUpload实现上传
- 使用commons-fileupload实现单个和多个文件上传
- 使用Commons-fileupload组件实现文件上传
- 使用Commons-fileupload组件实现文件上传的注意细节
- 使用commons-fileupload实现单个和多个文件上传
- 使用ServletFileUpload实现上传