62,254
社区成员
发帖
与我相关
我的任务
分享
<div id="upDiv">
<input type="file" id="fileInput" runat="server" onchange="SetFileInfo(this.id);return false;" /></div>
<script language="javascript">
function SetFileInfo(fileId)
{
var fileTop = document.getElementById(fileId).style.top;
var fileLeft = document.getElementById(fileId).style.left;
document.getElementById(fileId).style.top = "0";
document.getElementById(fileId).style.left = "0";
var W3CDOM = (document.createElement && document.getElementsByTagName);
if (!W3CDOM) return;
var fakeFileUpload = document.createElement('div');
var str = '<input type="file" name="file" onchange="SetFileInfo(this.id);return false;" ' +
'style="top:' + fileTop + 'left:' + fileLeft + '"/>;
document.getElementById('upDiv').insertAdjacentHTML("beforeEnd", str);
}
</script>
<style type="text/css">
span.addfile
{
background-image:url(../../images/ico/jony1.gif);
background-repeat:no-repeat;
display:block;
float:left;
height:16px;
position:relative;
text-decoration:none;
width:68px;
}
input.addfile {
cursor:pointer !important;
height:22px;
left:-5px;
filter:alpha(opacity=0);
position:absolute;
width:1px;
z-index: -1;
}
</style>
// JScript 文件
//--------------------附件上传--Start--------------------
var x=0; //初始化数组为0,之后随着附件数量变化来变化
var num = 1; //file 控件数组下标,从1开始,默认显示一个所以那个是 0
function addFile() {
var str = '<span class="addfile" id="span' + num +'"><input type="file" size="50" class="addfile" onchange="addFile()" name="uploadFile[' + num + '].file" ' + '/></span>'; //待插入的文件控件
var fileText = document.all("uploadFile[" + x + "].file").value; //得到文件控件的值
var ary = fileText.split("\\"); //分割文件,以'\'号
var fileTextValue = ary[ary.length-1]; //取出最后的文件名
document.all("span" + x).style.display = "none"; //将前一个 P 的子元素设为不可见
//在前面一个 File 控件隐藏后,接着再在原来的位置上插入一个
document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str);
var fileName = "<div id='newAttach" + x + "' style='float:left;margin:6px 12px 0px 4px;' nowrap='nowrap'><img src='../../images/Attach/Attach.gif' alt='' border=0/> <span id='" + x + "'></span>";
fileName = fileName + " <a href='javascript:DelAttach(\"newAttach" + x + "\",\"span" + x + "\")'><img src='../../Images/Ico/DELETE0.GIF' style='cursor:hand' height='14px' align='absmiddle' border=0></a></div>";
newAttachDiv.innerHTML =newAttachDiv.innerHTML + fileName;
document.getElementById(x).insertAdjacentText("beforeBegin",fileTextValue);
x++;
num++;
//alert(num);
}
//作用:删除已有的附件
// divID:容器DIV对象的ID
// id:附件的ID
// delObj:存储删除的附件ID
function DelAttach(divID,id,delObj)
{
var targetObj =document.getElementById(divID);
if (targetObj ==null)
alert("操作的对象为空,无法删除!");
else
targetObj.outerHTML="";
if (typeof(delObj) !="undefined")
{
//删除已存在的附件(将需要删除的附件ID保存到隐藏域中)
var delIDs =delObj.value;
if (delIDs =="")
{
delIDs =",";
}
delIDs += id +",";
delObj.value =delIDs;
}
else
{
//删除新增且尚未保存的附件
var newObj =document.getElementById(id);
newObj.outerHTML="";
}
}
//--------------------附件上传--End------------------
<!--B添加附件-->
<div style="width:100%;">
<p id="MyFile">
<span class="addfile" id="span0">
<input type="file" class="addfile" onchange="addFile()" size="1" name="uploadFile[0].file"/>
</span>
</p>
</div>
<div id="newAttachDiv"></div>
<!--E添加附件-->
// JScript 檔
var fileIndex = 0;
var dic = new ActiveXObject("Scripting.Dictionary");
var root = "divAttach";
var divid = "divitem";
var fileid = "fileitem";
var lblid = "labelitem";
var imgid = "imgitem";
var imgsrc = "IMG/delete.gif";
var css = "Label";
var height = "height:25px;";
function addFile()
{
var id = divid + fileIndex;
var itemid = fileid + fileIndex;
var obj = document.getElementById(id);
if(obj == null)
{
var div = document.createElement("DIV");
div.id = id;
var html = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr style=\"" + height + "\"><td>"
html += "<INPUT type=\"file\" onchange=\"getFile(this);\" onkeydown=\"CheckKeyDown(this)\" name=\"" + itemid + "\"/>";
html += "</td><td>";
var lblitemid = lblid + fileIndex;
var imgitemid = imgid + fileIndex;
html += "<div class=\"" + css + "\" id='" + lblitemid + "'><img src=\"" + imgsrc + "\" onmouseover=\"this.style.cursor='hand';\" onclick=\"delFile('" + id + "');\"></img></div>";
html += "</td></tr></table>";
div.innerHTML = html;
document.getElementById(root).appendChild(div);
}
}
function getFile(obj)
{
if(CheckFileSize(obj))
{
var path = obj.value;
var id = divid + fileIndex;
if(valueExists(path))
{
alert("File already exist.");
delFile(id);
return false;
}
var list = path.split('\\');
var filename = list[list.length - 1];
var lblitemid = lblid + fileIndex;
var div = document.getElementById(lblitemid);
var temp = div.innerHTML;
div.innerHTML = "";
div.appendChild(document.createTextNode(filename));
div.appendChild(document.createTextNode(" "));
div.innerHTML = div.innerHTML + temp;
var itemid = fileid + fileIndex;
var item = document.getElementById(itemid);
item.style.display="none";
dic.Add(id , path);
fileIndex++;
}
}
function delFile(id)
{
var div = document.getElementById(root);
var item = document.getElementById(id);
if (div != null && item != null)
{
div.removeChild(item);
//从数据字典移除
if(keyExists(id))
{
dic.Remove(id);
}
}
}
function keyExists(key)
{
a = (new VBArray(dic.Keys())).toArray();//获取键值。
for (i in a)//遍历该 dictionary。
{
if(a[i] == key)
return true;
}
return false;
}
function valueExists(value)
{
a = (new VBArray(dic.Items())).toArray();//获取键值。
for (i in a)//遍历该 dictionary。
{
if(a[i] == value)
return true;
}
return false;
}
function CheckFileSize(obj)
{
var maxLength = 4096000;//4M
var totalLength = 5120000;//5M
var fso = new ActiveXObject('Scripting.FileSystemObject');
if(obj.value.trim()!="")
{
var file = fso.GetFile(obj.value);
if(file.Size>maxLength)
{
alert('The size of attachment exceed 4Mb.');
obj.outerHTML=obj.outerHTML;
return false;
}
var total = 0;
var input_file=document.getElementsByTagName("INPUT");
for (var i=0; i<input_file.length; i++)
{
if (input_file[i].type=="file")
{
var iFile = fso.GetFile(input_file[i].value);
total += iFile.Size;
}
}
if(total > totalLength)
{
alert('The sum of all attachment size exceed 5Mb.');
obj.outerHTML=obj.outerHTML;
return false;
}
}
return true;
}
String.prototype.trim= function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
function CheckKeyDown(obj)
{
if(window.event.keyCode!=8&&window.event.keyCode!=46)
{
window.event.returnValue=false;
}
else
{
window.event.returnValue=false;
obj.outerHTML=obj.outerHTML;
}
}