AjaxFileUpload实现文件上传

Ajax实现文件上传需要两个jar包commons-fileupload-1.3.1.jarcommons-io-2.4.jar 和两个js文件ajaxfileupload.js,jquery.js

实例:

ajaxFileUpload.jsp

<script type="text/javascript" src="source/jquery.js"></script>
<script type="text/javascript" src="source/ajaxfileupload.js"></script>
<script type="text/javascript">
function ajaxFileUpload() {
$.ajaxFileUpload({
url:"FileUploadAjax",// servlet请求路径
type:"POST",
secureuri:false,
fileElementId:"file",// 上传控件的id
dataType:"json",
data : {"username": "zhangsan"},// 其它请求参数
success:function(data,status) {
alert(data.name);
},
error:function(data,status,e) {
alert("上传出错");
}
});

return false;
}


</script>


</head>

<body>
<form action="" method="POST" enctype="multipart/form-data">
<input id="file" type="file" name="file"/>
<button class="button" onclick="return ajaxFileUpload();">上传</button>
</form>
</body>


AjaxFileUpload.java

package controller; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.servletexception; 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; public class FileUploadAjax extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request,HttpServletResponse response) throws servletexception,IOException { System.out.println("----------------"); request.setCharacterEncoding("utf-8"); // 设置编码 response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); diskFileItemFactory dfif=new diskFileItemFactory(); ServletFileUpload sfl=new ServletFileUpload(dfif); String path=request.getSession().getServletContext().getRealPath("file"); System.out.println(path); String name=null; try { List<FileItem> list=sfl.parseRequest(request); System.out.println(list.size()); for(FileItem fi:list) { if(!fi.isFormField()) { File file=new File(path,fi.getName()); fi.write(file); System.out.println("ok--------------------"); }else{ name=fi.getString(); System.out.println(name+"00000000000000000"); } } } catch (FileUploadException e) { e.printstacktrace(); } catch (Exception e) { // Todo Auto-generated catch block e.printstacktrace(); }finally{ PrintWriter pw=response.getWriter(); String result="{\"name\":\""+name+"\"}"; System.out.println(result); pw.println(result); pw.flush(); } } public void doPost(HttpServletRequest request,IOException { this.doGet(request,response); } }

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...