jsp,servlet文件上传问题完善

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 }
原文地址:https://www.cnblogs.com/hejjon/p/11014707.html