使用servlet jsp 上传文件时,parseRequest(request) 始终为空

发布于 2021-11-23 12:58:34 字数 7422 浏览 837 评论 2

//(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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情场扛把子 2021-11-26 01:48:36

DiskFileItemFactory factory=new DiskFileItemFactory();,ServletFileUpload sfu=new ServletFileUpload(factory),List<FileItem> items=suf.parseRequest(request);

背叛残局 2021-11-25 18:05:09

回复
你写的是sfu..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文