环境:JDK 1.8
需要导入的jar包:1.commons-fileupload-1.2.2.jar 。 2,commons-io-1.4.jar。
Html的代码:
<!DOCTYPE html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <form action="another" method="post" enctype="multipart/form-data"> 个人名称:<input type="text" name="heroName" /> <br> 上传头像 : <input type="file" name="filepath" /> <br> <input type="submit" value="上传"> </form>
注意:这里的 enctype="multipart/form-data",一定要写。
后台代码:
public class UploadPhotoServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException { String filename = null; try { /*环境:文件目录工厂—————— disk:磁盘*/ DiskFileItemFactory factory = new DiskFileItemFactory(); /*核心操作类:创建一个文件上传解析器。*/ ServletFileUpload upload = new ServletFileUpload(factory); // 设置上传文件的大小限制为1M factory.setSizeThreshold(1024 * 1024); List items = null; try { /*解析请求体,获取请求体中的参数*/ items = upload.parseRequest(request); } catch (FileUploadException e) { e.printStackTrace(); } /*遍历*/ Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); /*判断item.isFormField()是否是普通类型*/ if (!item.isFormField()) { //不是普通类型,是文件类型 // 根据时间戳创建头像文件名称 filename = System.currentTimeMillis() + ".jpg"; //通过getRealPath获取上传文件夹,如果项目在e:/project/j2ee/web,那么就会自动获取到 e:/project/j2ee/web/uploaded String photoFolder = request.getServletContext().getRealPath("uploaded"); System.out.println("getRealPath:" + photoFolder); File f = new File(photoFolder, filename); if(!f.exists()){ //当前文件不存在时,在当前文件的父类下创建文件 f.getParentFile().mkdirs(); } // 通过item.getInputStream()获取浏览器上传的文件的输入流 InputStream is = item.getInputStream(); // 复制文件(即向文件f中写入数据) FileOutputStream fos = new FileOutputStream(f); byte b[] = new byte[1024 * 1024]; int length = 0; while (-1 != (length = is.read(b))) { fos.write(b, 0, length); } fos.close(); } else { //判断出是普通字段类型 //输出表单字段 System.out.println(item.getFieldName()); String value = item.getString(); //将字段对应的内容转换为utf-8; value = new String(value.getBytes("ISO-8859-1"), "UTF-8"); //输出内容 System.out.println(value); } } //将图片输出到页面 String html = "<img width='200' height='150' src='uploaded/%s'/> " ; response.setContentType("text/html"); PrintWriter pw = response.getWriter(); pw.format(html, filename); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
/*嘿嘿,本人还是Java新手,如果有什么错误的地方欢迎 指出错误 */