//(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"呢
suf?是什么东西?你描述的不太清楚。
你可能需要修改form的类型为multipart,然后再tomcat里面配置multipart的提交支持。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。