1.文件名.isFormField() 判断是不是普通的表单
2.文件名.getFieldName(); 得到普通表单的name属性
3.文件名.getString("utf-8"); 得到普通表单的值
4.文件名.getName(); 得到你上传的文件的名字
5. String savePath = this.getServletContext().getRealPath("/img"); 得到你需要保存的地址的物理地址
6.fileName.substring(fileName.lastIndexOf(".") 重命名的时候根据最后一个点来拆开 方便的到后缀名
7.File.separator / 或者\
package student;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import Imp.showStudentImp;
import bean.StudentBean;
import dao.StudentImpDao;
public class AddStudent extends HttpServlet {
// 数据处理
private showStudentImp showStudent = new StudentImpDao();
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = request.getServletContext();
// 创建工厂
DiskFileItemFactory dk = new DiskFileItemFactory();
// 创建文件上传解码器
ServletFileUpload fileUpload = new ServletFileUpload(dk);
List<FileItem> list = null;
// 将文件名放在外面是为了方便后面保存到对象中
Map<String, String> map = new HashMap<String, String>();
String saveName = null;
try {
// 解析上传的数据 得到的是一个集合
list = fileUpload.parseRequest(request);
for (FileItem file : list) {
// 判断该表单是不是普通的表单
if (file.isFormField()) {
// 获得每个表单的name
String fileName = file.getFieldName();
// 在获取表单里面的值
String fileValue = file.getString("utf-8");
// 将得到的值存入Map键值对中
map.put(fileName, fileValue);
} else {
// 不是的话就上传文件
// 得到上传的文件的名字
String fileName = file.getName();
// 解决文件乱码
fileName = new String(fileName.getBytes("iso-8859-1"), "utf-8");
// 得到需要将文件保存的目录
String savePath = this.getServletContext().getRealPath("/upload");
// 重新命名上传的文件 防止你再次上传的时候上传了同一个文件导致覆盖了以前的文件名
saveName = System.currentTimeMillis() + fileName.substring(fileName.lastIndexOf("."));
// 直接就写入文件 上传到服务器
file.write(new File(savePath + File.separator + saveName));
}
}
} catch (FileUploadException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 将信息保存到学生类中
StudentBean student = new StudentBean();
student.setStudentName(map.get("name"));
student.setPwd(map.get("pwd"));
student.setDenger(map.get("gender"));
// 保存的是地址而不是图片的名字
student.setImg("upload/" + saveName);
student.setLike(map.get("likes"));
student.setEducational(map.get("selects"));
// 添加学生
showStudent.addStudent(student);
// 重新请求派发到展示学生资料的界面
request.getRequestDispatcher("/ShowStudentsInformationSever?pageNo=0").forward(request, response);
}
}