ajaxFileUpload 异步上传文件简单使用



<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here




















package com.yangshidesign.weixinface.servlet;

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.alibaba.fastjson.JSONObject;

/**
 * Servlet implementation class FileUploadServlet
 */
@WebServlet("/FileUploadServlet")
public class FileUploadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.getWriter().println("ppppppppppppppppppp");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//需要返回的fileName
		String fileName = null;
		
		//参考资料  http://commons.apache.org/proper/commons-fileupload/using.html
		// Check that we have a file upload request
		boolean isMultipart = ServletFileUpload.isMultipartContent(request);
		
		// Create a factory for disk-based file items
		DiskFileItemFactory factory = new DiskFileItemFactory();

		// Configure a repository (to ensure a secure temp location is used)
		ServletContext servletContext = this.getServletConfig().getServletContext();
		File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
		factory.setRepository(repository);

		// Create a new file upload handler
		ServletFileUpload upload = new ServletFileUpload(factory);

		// Parse the request
		try {
			List items = upload.parseRequest(request);
			for(FileItem item : items) {
				//其他参数
				String type = item.getContentType();
				if(type == null) {
//					System.out.println(item.getString(item.getFieldName()));
					continue;
				}
				
				//文件参数
				fileName = item.getName();
				
				//设置保存文件路径
				String realPath = request.getServletContext().getRealPath("/image");
				File dir = new File(realPath);
				File f = new File(dir, fileName);
				
				if(f.exists()) {
					f.delete();
				}
				f.createNewFile();
				
				//保存
				item.write(f);
				
			}
		} catch (FileUploadException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		//返回结果
		JSONObject obj = new JSONObject();
		obj.put("fileName", fileName);
		response.getWriter().print(obj.toJSONString());
	}

}


需要用到的一个js文件:(点击下载)

ajaxfileupload.js

两个jar包:

commons-io-2.4.jar

commons-fileupload-1.3.1.jar


注意:上传成功之后没有执行回调函数。

解决方法:(参考链接:http://www.myexception.cn/ajax/727453.html)

打开ajaxfileupload.js拉到底下找到

if ( type == "json" ) {
            eval( "data = " + data );
        }	

改成:

if ( type == "json" ) {
        	data = data.replace("
","").replace("
",""); //data = eval("("+data.replace("
","").replace("
","")+")"); }


你可能感兴趣的:(WEB开发,ajaxfileupload,upload,ajax)