使用jquery.form.js实现无刷新上传文件

在不支持HTML5的浏览器上,并不支持纯Ajax上传文件,这时可以使用插件jquery.form.js,官网http://malsup.com/jquery/form。

客户端代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
%>



  
    My JSP 'index.jsp' starting page
	
	
	
  
  
  
    






服务端代码(struts2):
package org.zzj.action;

import java.io.File;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class AjaxFileUploadAction {
	private File[] file;
	private String[] fileFileName;
	
	public File[] getFile() {
		return file;
	}
	public void setFile(File[] file) {
		this.file = file;
	}
	public String[] getFileFileName() {
		return fileFileName;
	}
	public void setFileFileName(String[] fileFileName) {
		this.fileFileName = fileFileName;
	}
	
	public void upload() throws IOException{
		JSONObject result = new JSONObject();
		JSONArray fileArray = new JSONArray();
		JSONArray fileNameArray = new JSONArray();
		for (int i = 0; i < file.length; i++) {
			fileArray.add(file[i].getPath());
			fileNameArray.add(fileFileName[i]);
		}
		result.put("file", fileArray);
		result.put("fileName", fileNameArray);
		
		
		HttpServletRequest request = ServletActionContext.getRequest();
		String companyName = request.getParameter("companyName");
		String registCode = request.getParameter("registCode");
		String area = request.getParameter("area");
		String addr = request.getParameter("addr");
		result.put("companyName", companyName);
		result.put("registCode", registCode);
		result.put("area", area);
		result.put("addr", addr);
		
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setCharacterEncoding("UTF-8");
		response.getWriter().write(result.toString());
	}
}
经测试,在IE9上,uploadProgress方法无效。





你可能感兴趣的:(Web前端)