选择文件后自动上传文件

想要一个选择了文件就自动上传的效果,但之前的 都是写在form表单中来提交的。借助jquery的ajaxfileupload.js,可以这样子弄:

正面:

function uploadFile(obj, type) {

	$.ajaxFileUpload({
		url : "http://localhost:8081/ws2/servlet/fileUpload",
		secureuri : false,// 一般设置为false
		fileElementId : "fileUpload"+type,// 文件上传表单的id 
		dataType : 'json',// 返回值类型 一般设置为json
		data: {'type': type},
		
		success : function(data) // 服务器成功响应处理函数
		{
                },
		error : function(data)// 服务器响应失败处理函数
		{
			console.log("服务器异常");
		}
	});
	return false;
}
当在打开的框中双击了一个文件后,就会触发onchange事件,把上传的实现代码写中其中即可。

JAVA后台接收(一些路径参数请自行加上):

	
		request.setCharacterEncoding("utf-8");
		
		Map result = new HashMap();
		Part part = null; // servlet3.0的文件上传新办法
		

        
		String     jsonp = request.getParameter("jsonpcallback"), 
			   type = request.getParameter("type");
		
	
		
		try {
			
			if (type != null) {
				part = request.getPart("fileUpload"+type); // 参数为		
			}else {
				part = request.getPart("fileUpload"); 
			}
			// 获取文件名
			String header = part.getHeader("content-disposition"),
			       fileName = getFileName(header),
			       path = filePath + File.separator + fileName;
			
			File file = new File(filePath); // 建立目录
			if (!file.exists()) {
				file.mkdirs();
			}
			
			//part.write(path); weblogic下用part.write()无法写到指定的路径,它一定会搞到域里面。所以用流来写。从part中获取,不能从request获取
			InputStream is = part.getInputStream();
			FileOutputStream fos = new FileOutputStream(path);
			byte[] b = new byte[1024];
	        int i = 0;
	        while ((i = is.read(b)) > -1) {
	          fos.write(b, 0, i);
	        }
			



你可能感兴趣的:(JQuery,上传下载,前端技术)