jQuery版ajax实现文件上传

页面jsp代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta charset="utf-8">
	<script type="text/javascript" src="<%=basePath %>js/jquery1.11.3.min.js"></script>
	<script type="text/javascript">
		$(function(){
			$("[value='提交']").click(upload);
		})
		
		function upload(){
			$.ajax({
				url:"<%=basePath%>UploadAction",
				//请求方式
				type:"post",
				//接收服务器返回的数据类型
				dataType:"text",
				//获取表单数据
				data:new FormData($("#myform")[0]),
				//禁止ajax设置编码方式
				contentType:false,
				//禁止ajax将数据类型转换为字符串
				processData:false,
				//请求成功执行回调函数
				success:function(obj){
					if(obj=="ok"){
						alert("文件上传成功");
						alert(xhr);
					}
				},
				//请求失败
				error:function(xhr,statustext){
					alert("error:"+xhr.status+":"+statustext);
				}
			})
		}
	</script>
  </head>
  
  <body>
    <form id="myform">
    	 用户名:<input type="text" name="username"/><br/>
   		 密码:<input type="password" name="password"/><br/>
   		 头像:<input type="file" name="file"/><br/>
    	<input type="button" value="提交"/>
    </form>
  </body>
</html>

服务器端代码:

package com.min.action;

import java.io.IOException;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/UploadAction")
@MultipartConfig
public class UploadAction extends HttpServlet {

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			String username=request.getParameter("username");
			String password=request.getParameter("password");
			System.out.println("用户名:"+username+" 密码"+password);
			//获取上传的文件
			Part part=request.getPart("file");
			System.out.println("上传文件名:"+part.getSubmittedFileName());
			//上传文件夹在服务器的绝对路径
			String path=request.getServletContext().getRealPath("/upload");
			//将上传的问价写入服务器文件夹中
			part.write(path+"/"+UUID.randomUUID().toString()+part.getSubmittedFileName().substring(part.getSubmittedFileName().lastIndexOf(".")));
			System.out.println("文件上传成功");
			response.getWriter().write("ok");
		} catch (Exception e) {
			e.printStackTrace();
			response.getWriter().write("上传失败"+e.getMessage());
		}
		
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值