<html><head>
<title>案件原始资料上传</title>
<script language="javascript" src="../../public/js/service.js"></script>
</head>
<body οnlοad="initial()" bgcolor="#EFF3FF">
<p>-----------------------------------------------------------------------------------------</p>
<p>
<p>说明:文件上传采用XMLHTTP协议。屏去传统的FORM表单形式,通过base64编码分块,因此支持超大文本上传。</p>
<p>-----------------------------------------------------------------------------------------</p>
<p>选择要上传的图片文件<input type=file name="file" style="width:300px" οnclick="initfile()">
<input type="hidden" id="casenum",value="">
<input type=button style="cursor:hand;width:60pt" οnclick="BeginSendFiles();"value="上传文件" />
<input type=button style="cursor:hand;width:60pt" οnclick="javascript:Breaked=true;" value="中断上传" />
<input type=button style="cursor:hand;width:60pt" οnclick="javascript:window.close();" value="退出本页" />
<br><br>
<div id="processbar" width=300px>
</div>
<br>
<DIV
id=div_message>
</DIV>
</body>
</html>
<script language=VBScript>
Function I0a(l0a)
OI=""
For Olb=1 To LenB(l0a)
IO=AscB(MidB(l0a,Olb,1))
If IO<&H80 Then
OI=OI&Chr(IO)
Else
O1a=AscB(MidB(l0a,Olb+1,1))
OI=OI&Chr(CLng(IO)*&H100+CInt(O1a))
Olb=Olb+1
End If
Next
I0a=OI
End Function
</script>
<script language=javascript>
var xmlhttp ;
var ado_stream ; var mFileName, mPartStart, mPartID, mPartEnd ;
var SendCount ;
var BlockSize ;
var Breaked ;
var aryFiles ;
BlockSize = 1024*100;//每次发送字节数
Breaked = false ;
aryFiles = new Array() ; // 开始发送文件
function initial(){
var caseno=window.dialogArguments;
if(caseno==null){
caseno=document.all.casenum.value;
}
if(caseno==null) {
alert("没有相对应的举报案件");
window.close();
return;
}
document.all.casenum.value=caseno;
}
function BeginSendFiles() {
div_message.innerHTML="";
initAryFiles() ;
SendFile(aryFiles.pop()) ;
} // 构造待发送文件的数组
function initAryFiles() {
//aryFiles.push("c://aaa.zip");
//aryFiles.push("c://bbb.exe") ;
//c://aaa.zip c://bbb.exe本地文件
aryFiles.push(document.all.file.value);
aryFiles.reverse() ;//文件名
if(aryFiles[0].length<=0){
alert("文件名为空,不能上传");
}
}
function SendFile(vFullPath) { // 空文件则不执行上传
if (!vFullPath) { return ; }
Breaked = false ;
div_message.innerHTML ="" ;
ado_stream = new ActiveXObject("ADODB.Stream"); // 读取文件的流
ado_stream.Type = 1;
ado_stream.Open();
ado_stream.LoadFromFile(vFullPath); // 读取文件
ado_stream.position = 0 ;
BlockSize=ado_stream.size;
SendCount = Math.ceil(ado_stream.size/BlockSize) ; // 如果有余数则多发送一次
//alert(SendCount) ;
var reg = //b/w+./w+$/gi
mFileName =reg.exec(vFullPath) ;
mPartStart = true ;
mPartID = 1 ;
mPartEnd =false ;
SendData() ;
}
function SendData() {
if (SendCount > 0) {
var dom = new ActiveXObject("msxml2.DOMDocument"); // 发送的xml文件
dom.async = false;
dom.resolveExternals = false; // 构造xml文件头
var node =dom.createProcessingInstruction("xml","version='1.0'");
dom.appendChild(node) ;
node = null ; // 构造root节点
var root =dom.createElement("root");
dom.appendChild(root) ;
dom.documentElement.setAttribute("xmlns:dt","urn:schemas-microsoft-com:datatypes"); // 构造保存二进制数据的节点updata
node =dom.createElement("upData") ;
node.dataType = "bin.base64" ; //bin。base64编码
var att = dom.createAttribute("FileName") ; // 文件名属性
att.value = mFileName ;
node.setAttributeNode(att) ; att = null ;
var att = dom.createAttribute("PartStart") ; // 分段开始标记
att.value =mPartStart ;
node.setAttributeNode(att) ;
att = null ;
var att =dom.createAttribute("PartID") ; // 分段序号
att.value = mPartID ;
node.setAttributeNode(att) ;
att = null ;
var att = dom.createAttribute("PartEnd") ; // 分段结束标记
att.value = mPartEnd ;
node.setAttributeNode(att) ;
att = null ;
root.appendChild(node) ;
node.nodeTypedValue = ado_stream.Read(BlockSize); // 节点数据从stream读取,固定长度
node = null ; SendCount -= 1 ;
xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
var url="insert.jsp?casenum="+document.all.casenum.value;
xmlhttp.open("POST",url, false);//http://www.xxx.com/xxx/xxx.asp 为web路径上的文件
xmlhttp.onreadystatechange=CallBack ;
xmlhttp.setRequestHeader("CONTENT-TYPE","multipart/form-data");
xmlhttp.send(dom);
mPartStart = false ;
xmlhttp = null ;
}
else { ado_stream.Close(); ado_stream = null ; }
}
function CallBack(){ // 上传成功
if(xmlhttp.readystate == 4) { // 检查是否中断上传
if(Breaked) {
return ;
}
if (SendCount > 0) {
mPartID += 1 ; //
div_message.innerHTML += ("<br>" + xmlhttp.ResponseText) ;
var p = Math.floor((mPartID/(Math.ceil(ado_stream.size/BlockSize) + 1)) *100) ; // 计算进度百分比
ShowBar(p) ;
var t = setTimeout("SendData();", 1) ;
} else { // 传送完文件 //
div_message.innerHTML += mFileName +"传送完毕!<br>" ; // 继续传下一文件
ShowBar(0) ;
var cFile = aryFiles.pop();
SendFile(cFile) ;
}
}
}
function ShowBar(per) { // 进度条
processbar.innerHTML= "<table width='100%' border=0 cellpadding='0' cellspacing='0'><tr><td bgcolor='#6699FF'><input type=button style='width:" + per + "% ; border:0px; background:#005599; color:#FFFFFF'value=" + per + "%> </td></tr></table>" ;
}
function initfile(){
processbar.innerHTML="";
div_message.innerHTML="";
}
</script>
<script>
function initial(){
var caseno=window.dialogArguments;
if(caseno==null){
caseno=document.all.casenum.value;
}
if(caseno==null) {
alert("没有相对应的举报案件");
window.close();
return;
}
document.all.casenum.value=caseno;
}
</script>