开发者社区> 问答> 正文

使用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"呢
                

展开
收起
kun坤 2020-06-06 16:49:14 811 0
1 条回答
写回答
取消 提交回答

  • suf?是什么东西?你描述的不太清楚。

    你可能需要修改form的类型为multipart,然后再tomcat里面配置multipart的提交支持。


    ######回复 @WAINTINGSEN : 你写的是sfu..######DiskFileItemFactory factory=new DiskFileItemFactory();,ServletFileUpload sfu=new ServletFileUpload(factory),List<FileItem> items=suf.parseRequest(request);
    2020-06-06 16:49:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载