jsp文件上传
文件上传
目的:需要能够成功的将某个文档中的图片或者文件上传到工程中特定设置文件中。
应用:工程中连接数据库对用户信息进行存储时需要用户的头像存储(app中信息的存储)
问题: 无法对多个文件进行上传
是否成功?(成功运行)
重点代码和注释
V层:
<form action="aa" method="post" enctype="multipart/form-data">
<table>
<tr><td><input type="file" name="pic"></td></tr>
<tr><td><input type="text" name="userHeadPic"></td></tr>
<tr><td><input type="submit" value=" 上 传 "></td></tr>
</table>
注:表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.
C层:用于处理数据,后台完成上传的代码(此处上传后和前台不进行交互)
String path=getServletContext().getContextPath(); //(相对路径,也就是在那个文件下可以应用到的)
System.out.println("path:"+path); //(获取某个文件夹的绝对路径 文件夹名称)
String realPath=getServletContext().getRealPath("upload");//(绝对路径是文件上传的关键 )
System.out.println("realPath:"+realPath); //(path:/Wjsc,realPath:D:\apache-tomcat-7.0.37_x64\wtpwebapps\Wjsc\upload)
DiskFileItemFactory factory=new DiskFileItemFactory(); //关键代码段,目前理解为创建工厂
ServletFileUpload upload=new ServletFileUpload(factory); //工厂生产名为“upload”的产品
try {
List<FileItem> itemlist=upload.parseRequest(request); //此产品接收请求,处理V层传来的form表单
for(FileItem f:itemlist){ //完整遍历此表单
if(f.isFormField()){ //(判断是普通的表单上传域还是文件上传域)
System.out.println("name="+f.getFieldName());
System.out.println("value="+f.getString());
}else{
String name=f.getFieldName(); //如果是文件,则对文件的名称进行获取
InputStream in=f.getInputStream(); //创建输入流
OutputStream out=new FileOutputStream(new File(realPath,name));//创建输出流,在realpath路径下的文件中建立名为name的文件
IOUtils.copy(in, out);
in.close();
out.close();
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
---------------end----------------


浙公网安备 33010602011771号