67,513
社区成员
发帖
与我相关
我的任务
分享
http_request = false;
//下面需要建立一个XMLHttpRequest对象,用它进行服务器请求,针对不同浏览器建立方法不同
if (window.XMLHttpRequest)
{ // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType)
{
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject)
{ // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!http_request) {
alert('出现错误,不能建立一个XMLHTTP实例!');
return false;
}
//var url = "servlet/UploadServlet?filepath="+filepath;
var url = "servlet/UploadServlet?filepath="+"F://ScreenKinescope.rar";
//funccallback为请求返回后要调用的javascript方法
http_request.onreadystatechange = funccallback;
//该请求用get方式发送至url为/servlet/CheckServlet的Servlet,url可以带参数或数据方式同一般url传值,Servlet请看后面代码
//http_request.open('GET',url, true);
//http_request.send(null);
//如果要使用HTTP POST方式,必须要对 XMLHttpRequest 对象设置一个 Content-Type 头,使用以下语句(url中也可包含参数):
http_request.open('POST',url, true);
http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http_request.send(null);
//每隔5秒循环一次服务器请求
setTimeout('startProgress()',1000);
String filepath = request.getParameter("filepath");
String filepathF ="";
if (filepath.contains("/")) {
filepathF = filepath.substring(filepath.lastIndexOf("/") + 1);
}
ContinueFtp c = new ContinueFtp();
c.connect("localhost", 21, "userid", "gao");
c.u(filepath, "/"+filepathF);
public UploadStatus uploadFile(String remoteFile, File localFile,
FTPClient ftpClient, long remoteSize) throws IOException {
UploadStatus status;
// 显示进度的上传
long step = localFile.length() / 100;
long process = 0;
long localreadbytes = 0L;
//InputStream raf = new FileInputStream(localFile);
RandomAccessFile raf = new RandomAccessFile(localFile, "r");
OutputStream out = ftpClient.appendFileStream(new String(remoteFile
.getBytes("GBK"), "iso-8859-1"));
// 断点续传
if (remoteSize > 0) {
ftpClient.setRestartOffset(remoteSize);
process = remoteSize / step;
raf.seek(remoteSize);
localreadbytes = remoteSize;
}
byte[] bytes = new byte[1024];
int c;
while ((c = raf.read(bytes)) != -1) {
out.write(bytes, 0, c);
localreadbytes += c;
if (localreadbytes / step != process) {
process = localreadbytes / step;
UploadServlet.a = process;
System.out.println("上传进度:" + process);
// TODO 怎么把这个process这个变量时时的传到jsp页面上啊
}
}
out.flush();
raf.close();
out.close();
boolean result = ftpClient.completePendingCommand();
if (remoteSize > 0) {
status = result ? UploadStatus.Upload_From_Break_Success
: UploadStatus.Upload_From_Break_Failed;
} else {
status = result ? UploadStatus.Upload_New_File_Success
: UploadStatus.Upload_New_File_Failed;
}
return status;
}