jsp的form里面这样写的: if (!item.isFormField() && item.getName().length() > 0) { List items = upload.parseRequest(request),items为空,不知道怎么办了,求大哥们帮忙解决啊! |
|
50分 |
在status2 的配置文件里加上
<bean type= “org.apache.struts2.dispatcher.multipart.MultiPartRequest” name= “myRequestParser” class= “com.icf.common.base.actions.RequestParseWrapper” scope= “default” optional= “true ” /> <constant name= “struts.multipart.handler” value= “myRequestParser” /> class public class RequestParseWrapper extends JakartaMultiPartRequest { publicvoid parse(HttpServletRequest servletRequest, String saveDir)throws IOException{ |
5分 |
同样错误,纠结中~
|
5分 |
enctype=”multipart/form-data”去掉就可以了
|
15分 |
public void uploadFile(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=GBK"); request.setCharacterEncoding("GBK"); HttpSession session=request.getSession(); session.setAttribute("progressBar",0); //定义指定上传进度的Session变量 String error = ""; int maxSize=50*1024*1024; //单个上传文件大小的上限 DiskFileItemFactory factory = new DiskFileItemFactory(); //基于磁盘文件项目创建一个工厂对象 ServletFileUpload upload = new ServletFileUpload(factory); //创建一个新的文件上传对象 try { List items = upload.parseRequest(request);// 解析上传请求 Iterator itr = items.iterator();// 枚举方法 while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); //获取FileItem对象 if (!item.isFormField()) {// 判断是否为文件域 if (item.getName() != null && !item.getName().equals("")) {// 判断是否选择了文件 long upFileSize=item.getSize(); //上传文件的大小 String fileName=item.getName(); //获取文件名 //System.out.println("上传文件的大小:" + item.getSize()); if(upFileSize>maxSize){ error="您上传的文件太大,请选择不超过50M的文件"; break; } // 此时文件暂存在服务器的内存中 File tempFile = new File(fileName);// 构造临时对象 String uploadPath = this.getServletContext().getRealPath("/upload"); File file = new File(uploadPath,tempFile.getName()); // 获取根目录对应的真实物理路径 InputStream is=item.getInputStream(); int buffer=1024; //定义缓冲区的大小 int length=0; byte[] b=new byte[buffer]; double percent=0; FileOutputStream fos=new FileOutputStream(file); while((length=is.read(b))!=-1){ percent+=length/(double)upFileSize*100D; //计算上传文件的百分比 fos.write(b,0,length); //向文件输出流写读取的数据 session.setAttribute("progressBar",Math.round(percent)); //将上传百分比保存到Session中 } fos.close(); Thread.sleep(1000); //线程休眠1秒 } else { error="没有选择上传文件!"; } } } } catch (Exception e) { e.printStackTrace(); error = "上传文件出现错误:" + e.getMessage(); } if (!"".equals(error)) { request.setAttribute("error", error); request.getRequestDispatcher("error.jsp").forward(request, response); }else { request.setAttribute("result", "文件上传成功!"); request.getRequestDispatcher("upFile_deal.jsp").forward(request, response); } 看看这个例子吧 |
5分 |
一楼大侠的办法很好,解决了我纠结以旧的问题,在这里谢了
|
一楼的方法有用,感谢,搞了半天了,终于出来了。谢了。 |
|
十分感谢,终于解决了
|
|
为啥我那样加进去了,提示No result defined for action
去掉<bean type= “org.apache.struts2.dispatcher.multipart.MultiPartRequest” name= “myRequestParser” class= “com.icf.common.base.actions.RequestParseWrapper” scope= “default” optional= “true ” /> <constant name= “struts.multipart.handler” value= “myRequestParser” /> 的配置,程序能进入action,只是没能获取上传的文件 |
|
就是没有把common-io.jar包导进去
|
|
大家好,遇到这个问题的朋友们。
如果用的是springmvc的架构,那么注释掉掉springmvc文件上传的配置即可; 如果用struts2的朋友们,在一楼的基础上,将constant name= “struts.multipart.handler” 改为constant name= “struts.multipart.parserr”即可。 |
|
那struts1呢?
|
|
我什么框架都没有用呀,怎么改Web.xml
<?xml version=”1.0″ encoding=”UTF-8″?> |
|
求救,没用框架的咋办
|