使用servlet jsp 上传文件时,parseRequest(request) 始终为空
//(1)创建DiskFileItemFactory对象,该对象为解析器提供解析时的缺省的配置
DiskFileItemFactory factory=new DiskFileItemFactory();
//(2)创建解析器
ServletFileUpload sfu=new ServletFileUpload(factory);
/**(3)使用解析器解析(InputStream)
*解析器会将一个表单域(比如,一个文件输入框)中的数据封装到一个
*FileItem对象上。FileItem对象上提供了相应的方法获取表单域中的数据
*
*/
try {
List<FileItem> items=sfu.parseRequest(request);
for(int i=0;i<items.size();i++){
FileItem item=items.get(i);
if(item.isFormField()){
//是一个普通的表单域
String username=item.getString();
System.out.println(username);
}else{
//是一个上传文件域,将该文件保存到某个文件下面
ServletContext cont=getServletContext();
String p=cont.getRealPath("upload");
System.out.println("path:"+p);
//读取文件名
String filename=item.getName();
System.out.println("filename:"+filename);
File file=new File(p+File.separator+filename);
item.write(file);
String userId=request.getParameter("userId");
String picName="upload"+File.separator+filename;
System.out.println(picName);
HttpSession session=request.getSession();
session.setAttribute("ph", picName);
Pic pic=new Pic();
pic.setPicName(picName);
pic.setUserId(Integer.parseInt(userId));
PicDAO dao=(PicDAO)Factory.getInstance("PicDAO");
try {
dao.save(pic);
response.sendRedirect("detali.do?id="+userId);
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
输出的suf是空的,用tamcat,是在那个文件夹下面加上传文件夹"upload"呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
DiskFileItemFactory factory=new DiskFileItemFactory();,ServletFileUpload sfu=new ServletFileUpload(factory),List<FileItem> items=suf.parseRequest(request);
回复
你写的是sfu..