1. 上传文件时文件名中文乱码 upload.setHeaderEncoding("utf-8");
有个疑惑: 不管设置不设置都不乱码,但是刘帅龙老师讲的时候出现了乱码 .
2. 上传文件的目标文件夹必须指定, 若不指定怎么解决?
1 File file = new File("E:/img"); 2 3 if (!file.exists()) { 4 file.mkdirs(); 5 } 6 7 item.write(new File(file, item.getName()));
3. 上传文件至当前服务器目录下. 指定目录为
1 File file = new File("D:/Develop/tomcat/apache-tomcat-7.0.94/webapps/studentManage/upload");
4. 若文件名相同则会覆盖原来的, 与实际需求相违 // 随机生成文件名不带拓展名
1 String uuid = UUID.randomUUID().toString(); // 获取文件拓展名 (带点的) 2 String ext = item.getName().substring(item.getName().lastIndexOf(".")); // 3 System.out.println(ext); // .jpg
4 // 拼接成完整的文件名
5 String fileName = uuid.concat(ext);
5. 指定上传文件的大小
1 // 指定文件大小, 超出范围则向前台发送"文件大小超出范围20K" 2 if (item.getSize() > 1024 * 20) { // 限定文件大小为20K 3 req.setAttribute("msg", "文件大小超出范围20K"); 4 req.getRequestDispatcher("/jsp/regist.jsp").forward(req, resp); 5 6 return; 7 }
6. 指定上传文件的类型
1 // 指定文件的类型 2 if (!(".jpg".equals(ext) || ".png".equals(ext) || ".gif".equals(ext))) { 3 req.setAttribute("msg", "上传的文件格式不是.jpg或者.png或者.gif"); 4 req.getRequestDispatcher("/jsp/regist.jsp").forward(req, resp); 5 return; 6 }
7.获取普通表单项的值
1 // 注意: 由于所有的表单项都以二进制的形式存储在了list中, 所以不能采用req.getParameter(); 2 // 的方式获取普通表单项的值 3 if ("uname".equals(item.getFieldName())) { 4 uname = item.getString("utf-8"); // 设置utf-8防止中文乱码 5 } 6 7 if ("age".equals(item.getFieldName())) { 8 age = Integer.parseInt(item.getString("utf-8")); 9 } 10 11 if ("score".equals(item.getFieldName())) { 12 score = Double.parseDouble(item.getString("utf-8")); 13 }