81,092
社区成员
发帖
与我相关
我的任务
分享
function test() {
// 创建Ajax.Request对象,发起一个Ajax请求
var myAjax = new Ajax.Request(
'Upload', // 请求的URL
{
method: 'get', // 使用GET方式发送HTTP请求
onComplete: showResponse // 指定请求成功完成时需要执行的方法
}
);
}
function showResponse(response) {
$('divResult').innerHTML = response.responseText;
}
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="prototype.js" language="JavaScript"
type="text/javascript"></script>
<script type="text/javascript" language="JavaScript">
var updater = null;
function startStatusCheck()
{
//设置上传按钮为不可用状态,避免多次提交
$('submitButton').disabled = true;
//创建周期性发送请求的Ajax对象
updater = new Ajax.PeriodicalUpdater(
'status',
'Upload',
{asynchronous:true, frequency:1, method: 'get', parameters: 'c=status',onSuccess: showFilter,
onFailure: reportError,on});
}
function showResponse(response) {
alert(0);
$('divResult').innerHTML = response.responseText;
}
//出错时处理方法
function reportError(request)
{
$('submitButton').disabled = false;
$('status').innerHTML = '<div class="error"><b>Error communicating with server. Please try again.</b></div>';
}
//上传完毕后,取消周期性获取进度状态,将最终的状态显示在客户端
function killUpdate(message)
{
$('submitButton').disabled = false;
if(null!=updater)
{
//停止刷新获取进度
updater.stop();
}
if(message != '')//如果有错误信息,则显示出来
{
$('status').innerHTML = '<div class="error"><b>Error processing results: ' + message + '</b></div>';
}
else//如果没有错误信息
{
//获取上传文件的完成状态,显示到客户端
new Ajax.Updater('status',
'Upload',
{asynchronous:true, method: 'get', parameters: 'c=status', onFailure: reportError});
}
}
</script>
</head>
<body>
<!-- 这个是隐藏的<ifame>作为表单提交后处理的后台目标-->
<!-- 这个是隐藏的<ifame>作为表单提交后处理的后台目标-->
<iframe id='target_upload' name='target_upload' src=''
style='display: none'></iframe>
<!-- 当表单提交后,调用startStatusCheck()方法-->
<form enctype="multipart/form-data" name="fileform" method="post"
action="Upload" onsubmit="startStatusCheck();"
target="target_upload">
<BR>
请选择上传的文件:
<BR>
<input name="importFile" type="file">
<input id="button" type="button" value="上传" onclick="startStatusCheck()" />
</form>
<!-- 这里显示进度条 -->
<div id="status"></div>
<div id="divResult" >123</div>
</body>
</html>
package book.upload;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
System.out.println("DoPost");
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
response.setContentType("text/html; charset=GBK");
// 创建HttpSession对象
HttpSession session = request.getSession();
if ("status".equals(request.getParameter("c"))) {// 如果请求中c的值为status
doStatus(session, response);// 调用doStatus方法
} else {// 否则,调用doFileUpload方法
doFileUpload(session, request, response);
}
}
private void doFileUpload(HttpSession session, HttpServletRequest request,
HttpServletResponse response) throws IOException {
System.out.println("doFileUpload");
try {
for(int i=0;i<200000;i++)
{
Thread.sleep(1000l);
session.setAttribute("aa", i);
}
} catch (Exception e) {
sendCompleteResponse(response, e.getMessage());
}
}
private void doStatus(HttpSession session, HttpServletResponse response)
throws IOException {
if(session.getAttribute("aa")!=null)
{
System.out.println(session.getAttribute("aa"));
response.getWriter().println(session.getAttribute("aa"));
}
}
}