======先设置form 表单的属性:
<form name ="dataFrm" id="dataFrm" action="doAdd.jsp" method="post" enctype="multipart/form-data">
======= 用了 commons-fileupload-1.2.2-bin 组件
======= 用了 commons-io-2.4-bin 组件
核心类 ServletFileUpload
========
第三方组件
第三方组织提供的组件
http://commons.apache.org
commons-fileupload
apache公司提供的组件,实现上传功能
为新闻添加图片的步骤:
下载commons-fileupload-1.2.2.jar和commons-io-
2.4.jar导入项目
准备添加新闻的页面,提交至JSP
在JSP中实现文件上传和新闻添加
小结
准备新闻的提交页面
在表单中指定属性enctype="multipart/form-data"
修改表单的提交方式为post
在JSP中实现文件上传
检查请求类型
声明对象
转换请求对象
boolean isMultipart=ServletFileUpload.isMultipartContent(request);
if(isMultipart)//当enctype="multipart/form-data",并且method="post",
则isMultipart为true
FileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factory);
List<FileItem> items=null;
items=upload.parseRequest(request);
在JSP中实现文件上传
检查请求类型
声明对象
转换请求对象
保存上传的文件
获取普通字段
if(!item.isFormField()){
File fullFile=new File(item.getName());
File uploadFile=new File(realPath,fullFile.getName());
item.write(uploadFile);
}
if (item.isFormField()){
fieldName = item.getFieldName();
if (fieldName.equals("title")){
news.setTitle(item.getString("UTF-8"));
}…
}
==========================================
使用<img>标签实现图片
的展现
<% //接收增加的新闻信息,并调用后台方法,将新闻信息插入数据库 //设置请求的字符编码UTF-8 request.setCharacterEncoding("utf-8"); //创建News对象 News news = new News(); Date createDate = new Date(); news.setCreateDate(createDate); // boolean bRet = false; boolean bUpload = false; // //解析请求之前先判断请求类型是否为文件上传类型 boolean isMultipart = ServletFileUpload.isMultipartContent(request); //指定文件上传路径(项目部署在服务器上的真实路径的/upload/) String uploadPath = request.getSession().getServletContext().getRealPath("upload/"); //如果uploadPath目录不存在,就创建目录 File savedDir = new File(uploadPath); if(!savedDir.exists()){//创建文件夹 savedDir.mkdir();//mkdir只能在已经存在的目录中创建创建文件夹;createNewFile可以创建文件如:a.txt } if(isMultipart){//处理文件上传 //创建文件上传的核心类ServletFileUpload //实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload FileItemFactory factory = new DiskFileItemFactory(); // 用以上工厂实例化上传组件 ServletFileUpload upload = new ServletFileUpload(factory); //解析请求 List<FileItem> items = upload.parseRequest(request); //得到迭代器 Iterator<FileItem> iter = items.iterator(); while(iter.hasNext()){ FileItem item = iter.next(); //判断fileitem是文本域还是文件域 if(item.isFormField()){//若是普通的文本表单控件 if(item.getFieldName().equals("categoryId")){ news.setCategoryId(Integer.parseInt(item.getString()));//获取文本域的value的值 }else if(item.getFieldName().equals("title")){ news.setTitle(item.getString("UTF-8"));//获取文本域的value的值 }else if(item.getFieldName().equals("summary")){ news.setSummary(item.getString("UTF-8"));//获取文本域的value的值 }else if(item.getFieldName().equals("newscontent")){ news.setContent(item.getString("UTF-8"));//获取文本域的value的值 }else if(item.getFieldName().equals("author")){ news.setAuthor(item.getString("UTF-8"));//获取文本域的value的值 } }else{//若是文件表单控件 String fileName = item.getName();// 获得文件名(全路径) //判断文件表单名是否为空 if(fileName!=null&&!fileName.equals("")){ //把得到的全路径名通过 fullFile转化一下,获得文件的名 File fullFile = new File(fileName); //将文件保存到指定的路径下 //文件名:fullFile.getName()---保存路径:uploadPath File saveFile = new File(uploadPath,fullFile.getName()); //写入到saveFilewe文件----上传操作 item.write(saveFile); news.setPicPath(fullFile.getName()); bUpload=true; } } } if(bUpload){ System.out.println("上传成功之后的文件名:" + news.getPicPath()); //调用后台的方法,将新闻信息插入数据库中 } bRet = newsService.addNews(news); if(bRet){//成功 //重定向 response.sendRedirect("newsDetailList.jsp"); }else{//失败 //转发 //request.getRequestDispatcher("newsDetailCreateSimple.jsp").forward(request,response); %> <jsp:forward page="newsDetailCreateSimple.jsp"></jsp:forward> <%} } %>