\今天了解到了文件上传的两种方式:Servlet和Struct2,其实说到底都是一种方式,都用到两个包:commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar。
用Servlet方式文件上传,结构如图:
1、首先添加上面两个包到lib文学下面去。
2、写好index.jsp
<form enctype="multipart/form-data" action="FileUploadServlet" method="post" >
用Servlet上传文件:<br/>
用户名:<input type="text" name="usename"> <br/>
上传文件:<input type="file" name="file1"><br/>
上传文件: <input type="file" name="file2"><br/>
<input type="submit" value="提交"/>
</form>
注意以上必须写enctype="multipart/form-data"和method="post"
3、写FileUploadServlet类
/**上传文件*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
super.doPost(req, resp);
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory) ;
try {
List items = upload.parseRequest(req) ;
ListIterator iterator = items.listIterator() ;
while (iterator.hasNext()) {
FileItem item = (FileItem) iterator.next() ;
if (item.isFormField()) {
System.out.println(item.getFieldName() ); //非文件域
}else { //文件域
System.out.println(item.getFieldName() );
String fullName = item.getName() ;
int index = fullName.lastIndexOf("\\")+1 ;
String name = new Date().getTime()+ fullName.substring(index) ;
String savePath = this.getServletContext().getRealPath("\\upload") ;
File file = new File(savePath + "\\" + name) ;
item.write(file) ;
System.out.println("文件地址:" + file.getAbsolutePath());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
注意必须用post方法。
4、web.xml配置
<servlet>
<servlet-name>FileUploadServlet</servlet-name>
<servlet-class>cn.cqut.edu.fileUploadServlet.FileUploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadServlet</servlet-name>
<url-pattern>/FileUploadServlet</url-pattern>
</servlet-mapping>
这样就轻松是完成了一个上传文件的操作
然后到打印的文件地址去看有么有文件吧! 用struct2上传文件,待下回分解