第一步:
第二步:新建servlet
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
String state="false";
//指定上传位置
String uploadFiilePath=request.getSession().getServletContext().getRealPath("upload/");
String finleString=request.getContextPath()+"/upload/";
System.out.print(finleString);
File saveDir = new File(uploadFiilePath);
//如果目录不存在,就创建目录
if(!saveDir.exists()){
saveDir.mkdir();
}
//判断表单是否设置了上传属性
boolean isMultipart=ServletFileUpload.isMultipartContent(request);
if(isMultipart){
//产生关键对象upload,用来取数据
FileItemFactory factory=new DiskFileItemFactory(); // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
ServletFileUpload upload=new ServletFileUpload(factory); // 用以上工厂实例化上传组件
try {
//把request中的数据转换成FileItem的集合
List<FileItem> items=upload.parseRequest(request);
Iterator<FileItem> iter= items.iterator();
BbsDetail bdtl=new BbsDetail();
while (iter.hasNext()) {
FileItem item= (FileItem)iter.next();
if(item.isFormField()){ // 如果是普通表单控件
String fieldName=item.getFieldName(); // 获得该字段名称
if(fieldName.equals("title")){ //如果提交name有title属性
//取出对应的值,把此提交数据保存在对象中,好在数据库保存
bdtl.setTitle(item.getString("UTF-8"));
}
if(fieldName.equals("content")){
bdtl.setContent(item.getString("UTF-8"));
}
if(fieldName.equals("author")){
bdtl.setAuthor(item.getString("UTF-8"));
}
}else{ // 如果为文件域
String fileName = item.getName();// 获得文件名(全路径)
if(fileName!=null && !fileName.equals("")){
File fullFile=new File(fileName);
File saveFile=new File(uploadFiilePath, fullFile.getName()); //将文件保存到指定的路径
try {
item.write(saveFile); //把获取数据保存到电脑文件
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String uploadFiileName=fullFile.getName(); //获得文件名称
bdtl.setPicPath(uploadFiileName); //保存到对象,调用方法保存到数据库
}
}
}