|
需要导入的包文件:commons-fileupload-1.1.1.jar和commons-io-1.1.jar
页面:
<form action = "/struts2/UploadServlet" method = "post" enctype = "multipart/form-data">
username:<input type = "text" name = "username"><br>
password:<input type = "password" name = "password"><br>
file1 :<input type = "file" name = "file1"><br>
file2 :<input type = "file" name = "file2">
<input type = "submit" value = "submit">
</form>
servlet:
public UploadServlet extends HttpServlet{
public void doPost(HttpRequest request,HttpResponse response) throw ServletException,IOException{
DiskFileItemFactory factory = new DiskFileItemFactory();
String path = request.getRealPath("/upload");//将upload目录作为临时存储的目录
factory.setRepository(new File(path));
factory.setSizeThreshold(1024*1024);//小于1M的文件写到内存中,如果大于1M则写入到磁盘中。
ServletFileUpload upload = new ServletFileUpload(factory);
try{
List<FileItem> list = upload.parseRequest(request);//一个FileItem对应表单中的一个组件,包括(文件类型、普通类型)并不是只对应文件类型
for(FileItem item:list){
if(item.isFormField()){//表单的属性是否为文件类型,不是文件类型true
String name = item.getFieldName();
String value = item.getString();//提取值
request.setAttribute(name,value);
}else{
String name = item.getFieldName();
String value = item.getName();//是文件类型才会返回文件的名称,如果是一般类型返回null
int start = name.lastIndexOf("\\");
String fileName = value.substring(start+1);//真正文件名
request.setAttribute(name,value);
item.write(new File(path,fileName);
//OutputStream os = new FileOutputStream(new FileFile(path,filename);
//InputStream is = item.getInputStream();
//byte[] buffer = new byte[400];
//int length = 0;
//while((length = is.read(buffer))>0){
//os.write(buffer,0,length);
//}
//os.close();
//is.close();
}
}
}
catch(Exception ex){
ex.printStackTrace();
}
request.getRequestDispatcher("upload/result2.jsp").forward(requet,response);
}
}
}
web.xml:
<servlet>
<servlet-name>UploadSerlvet</serlvet-name>
<servlet-class>com.test.serlvet.UploadSerlvet</serlvet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadSerlvet</serlvet-name>
<url-pattern>/UploadServlet</url-pattern>
</servlet-mapping> |
|