燃眉之急!sturt2的action中获取不到SWFUpload组件提交的request中的文件对象

是这样的,我用servlet接受到request的值的话:主要是这句话
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;
	}	
	
}


求助路过的大侠伸出援手


猜你喜欢

转载自zhudahong12.iteye.com/blog/1859452