List<?> items = upload.parseRequest(request);
拿到文件对象列表。
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置内存缓冲区,超过后写入临时文件 factory.setSizeThreshold(10240000);//10M // 设置临时文件存储位置 ServletFileUpload upload = new ServletFileUpload(factory); // 设置单个文件的最大上传值 upload.setFileSizeMax(10002400000l);//100M // 设置整个request的最大值 upload.setSizeMax(10002400000l);//1000M upload.setHeaderEncoding("UTF-8"); SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHH"); String time = formatter.format(new Date()); String day = time.substring(0, 7); String timeDetail = time.substring(8); String ftpDirectory = "H:\\upload\\"+day+"\\"+timeDetail; try { List<?> items = upload.parseRequest(request); FileItem item = null; String fileName = null; for (int i = 0 ;i < items.size(); i++){ item = (FileItem) items.get(i); fileName = item.getName(); InputStream fis = item.getInputStream(); // 保存文件 if (!item.isFormField() && item.getName().length() > 0) { this.uploadFileByApacheByBinary(ftpDirectory,fis,fileName); fis.close(); } } } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }
然而如果我用struts2的action拿request中的内容话,
List<?> items = upload.parseRequest(request);
就拿不到
public class FileUploadAction extends ActionSupport implements ServletRequestAware{ private static final long serialVersionUID = -7825355637448948879L; private String server = "127.0.0.1"; private int port = 21; private String userName = "dahong"; private String userPassword = "dh"; FTPClient ftpClient = null; public FileUploadAction(){ try { ftpClient = new FTPClient(); ftpClient.connect(server, port); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } HttpServletRequest request = null; public void setServletRequest(HttpServletRequest request) { this.request = request; } public String execute() throws ServletException, IOException { DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置内存缓冲区,超过后写入临时文件 factory.setSizeThreshold(10240000);//10M // 设置临时文件存储位置 ServletFileUpload upload = new ServletFileUpload(factory); // 设置单个文件的最大上传值 upload.setFileSizeMax(10002400000l);//100M // 设置整个request的最大值 upload.setSizeMax(10002400000l);//1000M upload.setHeaderEncoding("UTF-8"); SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHH"); String time = formatter.format(new Date()); String day = time.substring(0, 7); String timeDetail = time.substring(8); String ftpDirectory = "H:\\upload\\"+day+"\\"+timeDetail; System.out.println("ftpDirectory=="+ftpDirectory); try { List<?> items = upload.parseRequest(request); FileItem item = null; String fileName = null; for (int i = 0 ;i < items.size(); i++){ item = (FileItem) items.get(i); fileName = item.getName(); InputStream fis = item.getInputStream(); // 保存文件 if (!item.isFormField() && item.getName().length() > 0) { this.uploadFileByApacheByBinary(ftpDirectory,fis,fileName); } } } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return SUCCESS; } }
求助路过的大侠伸出援手