漂亮的附件上传功能之页面表现 模仿qqmail 163mail
来源:互联网 发布:windows 日志分析 编辑:程序博客网 时间:2024/04/30 14:13
jsp里代码
<!--file chooser start-->
<input name="fattachlist" id="fattachlist" type="hidden" value=""/>
<div>
<div style="height:20px;">
<div style="float:left;margin-top:2px">
<script language="javascript" type="text/javascript">
document.write(OutputAttachBtn());
</script>
</div>
</div>
<div style="margin-bottom:2px;margin-left:14px;height:auto!important;height:0px;">
<div id="filecell" style="margin-bottom:4px;line-height:17px;">
<div id="Duploader0" style="display:none">
<INPUT name="uploader0" class='file upload' id="uploader0" type=file onChange="AfterAddFile('uploader0')"><span id='Suploader0'></span><span id='SIZEuploader0'></span> <A onclick="DelUploader('uploader0')"><img src="../../images/delg.gif" alt="删除" align="absmiddle" style="border:0"></A><INPUT name="localFile" id="localFile" type=hidden><INPUT name="upFile" id="upFile" type=hidden>
</div>
</div>
</div>
</div>
<!--file chooser end-->
js代码:
//from qqmail
window.onerror=function(){return true;};
//navigate
var gsAgent = navigator.userAgent;
var gfAppVer = parseFloat(navigator.appVersion);
var gIsOpera = gsAgent.indexOf("Opera") > -1;
var gIsKHTML = gsAgent.indexOf("KHTML") > -1 || gsAgent.indexOf("Konqueror") > -1 || gsAgent.indexOf("AppleWebKit") > -1;
var gIsSafari = gsAgent.indexOf("AppleWebKit") > -1;
var gIsIE = gsAgent.indexOf("compatible") > -1 && !gIsOpera;//&& gsAgent.indexOf("MSIE") > -1;
var gIsTT = gIsIE ? (navigator.appVersion.indexOf("TencentTraveler") != -1 ? 1 : 0) : 0;
var gIsFF = gsAgent.indexOf("Gecko") > -1 && !gIsKHTML;
var gIsNS = !gIsIE && !gIsOpera && !gIsKHTML && (gsAgent.indexOf("Mozilla") == 0) && (navigator.appName == "Netscape");
if (gIsIE) {
var reIE = new RegExp("MSIE (//d+//.//d+);");
reIE.test(navigator.userAgent);
var gIEVer = parseFloat(RegExp["$1"]);
}
//global base function
var gd = document;
function Gel(id, ob) {
return (ob ? ob : gd).getElementById(id);
}
function GelTags(tag, ob) {
return (ob ? ob : gd).getElementsByTagName(tag);
}
function S(i, win) {
return (win?win:window).document.getElementById(i);
}
function SO(i, o) {
return Gel(i, o);
}
function SN(i, win) {
return (win?win:window).document.getElementsByName(i);
}
function SNO(i, o) {
return (o ? o : gd).getElementsByName(i);
}
function F(sID, win) {
if(!sID) return null;
var frame = S(sID, win);
if(!frame) return null;
return frame.contentWindow?frame.contentWindow:(win?win:window).frames[sID];
}
function GetSid() {
try {var s = top.g_sid;}catch(e){}
s = s ? s : (S("sid") ? S("sid").value : "");
if (!s) {
s = (top.location.href.split("?")[0]).split("/");
s = s[s.length - 1];
}
return s;
}
function Show(obj, bShow) {
obj = (typeof(obj) == "string" ? S(obj) : obj);
if (obj) obj.style.display= (bShow ? "" : "none");
}
function ShowN(name, bShow) {
var o = SN(name);
for (var i = o.length - 1; i >= 0; i--) {
Show(o[i], bShow);
}
}
function GetPath(type, bMustFull) {
var p = "";
switch (type) {
case "image":
try {p = top.images_path;}catch(e){}
if(!p) p = "/images/";
break;
case "js":
try {p = top.js_path;}catch(e){}
if(!p) p = "/include/scripts/";
break;
case "css":
try {p = top.css_path;}catch(e){}
if(!p) p = "/include/css/";
break;
case "skin":
try {p = top.skin_path;}catch(e){}
if(!p) p = "0";
break;
}
if (bMustFull && type != "skin" && p.indexOf("http://") == -1) p = "http://" + location.host + p;
return p;
}
function GetTopWin() {
return top.topFrame ? top.topFrame : top;
}
function GetMainWin() {
return top.mainFrame ? top.mainFrame : top;
}
//附件处理相关函数
var AttachID=1;
var AttacheTmp = "<span> </span><a onclick=/"DelUploader(/'_Name/')/"><img src='"+GetPath("image")+"delg.gif' alt='删除' align='absmiddle' style='border:0'></a><input name='localFile' id='localFile' type=hidden><input name='upFile' id='upFile' type=hidden>";
function CheckAttahWarnningType() {
var nat = ["exe","msi","scr","cmd","bat","com"];
var fds = Gel('filecell').childNodes;
var len = nat.length;
for (i = fds.length - 1; i >= 0; i--) {
var v = fds[i].childNodes[0].value.toLowerCase();
for (j = 0; j < len; j++) {
var pos = v.lastIndexOf(nat[j]);
if (pos != -1 && v.length - pos == nat[j].length) return true;
}
}
return false;
}
function AddFileCell(mode) {
var attr = [["<INPUT name=_Name class='file upload' id=_Name type=file onchange='AfterAddFile(/"_Name/")'><span id=S_Name></span><span id=SIZE_Name></span>", false],["<INPUT name=_Name class='file' id=_Name contentEditable=false type=file size=45>", true]][mode == "new" ? 0 : 1];
var Template = attr[0] + AttacheTmp;
var FileCell = Gel('filecell');
var Name="uploader"+AttachID;
var Div=gd.createElement("div");
Show(Div, attr[1]);
Div.id="D"+Name;
Div.innerHTML = Template.replace(new RegExp("_Name", "g"),Name);
FileCell.appendChild(Div);
AttachID++;
}
function AddFileCellFF() {
AddFileCell("old");
}
function FormatSize(size) {
if (size > 1024*1024) return parseInt(size * 100 / (1024 * 1024)) / 100.0 + "M";
if (size > 1024) return parseInt(size * 100 / 1024) / 100.0 + "K";
return size + "Byte";
}
function AfterAddFile(id) {
Gel("S" + id).innerText = Gel(id).value;
Show(Gel("D"+id), true);
AddFileCell("new");
}
function DelUploader(Name) {
var FileCell = Gel('filecell');
var FileObj = Gel(Name);
if (FileObj.disabled) {
var lp = FileObj.value.lastIndexOf("//");
if (lp != -1) {
var al = GetMainWin().Gel("fattachlist");
var name = FileObj.value.substr(lp+1) + " |";
var pos = al.value.indexOf(name);
if (pos != -1) {
al.value = al.value.substr(0, pos) + al.value.substr(pos + name.length, al.value.length - pos - name.length);
}
}
}
FileCell.removeChild(FileObj.parentNode);
CheckAttach();
}
function CheckAttahforIE() {
var fcell = Gel('filecell');
return (Gel('filecell').childNodes.length > 1 || fcell.parentNode.childNodes.length > 2 ? 1 : 0);
}
//该函数混淆时候要放到用户保留库
function CheckAttach() {
//只有是IE才检查,为了提高附件上传用户感...无办法
if (gIsIE) {
try{
var s=[[true, false],[false, true]][CheckAttahforIE() > 0 ? 1 : 0];
Show('sAddAtt1', s[0]);
Show('sAddAtt2', s[1]);
}catch(e){}
}
}
function IeFileUpload() {
F("iefileupload").document.body.innerHTML = '<input id=/'btn/' type=button onclick=/'parent.S("AttachFrame").onclick = function() {parent.document.getElementById("uploader" + (parent.AttachID-1)).click();parent.CheckAttach(); };try{parent.S("AttachFrameMB", parent.F("qqmail_menu")).parentNode.onclick = function() {parent.document.getElementById("uploader" + (parent.AttachID-1)).click();parent.CheckAttach();};}catch(e){}/'>';
setTimeout(function(){F("iefileupload").document.getElementById("btn").click();}, 0);
}
function OutputAttachBtn() {
return '<a id="AttachFrame" onclick="AddFileCellFF()"><img src="'+GetPath("image")+'icon_att.gif" align="absmiddle" style="margin:0 3px 0 0"><span id="sAddAtt1">添加文件...</span><span id="sAddAtt2" style="display:none;">继续添加...</span></a>' + ' ' + (gIsIE && gIEVer >= 6 ? "<iframe id='iefileupload' style='width:0;height:0;' onload='IeFileUpload()'></iframe>" : "");
}
还有一个css样式可以参考 qqmail去下载
- 漂亮的附件上传功能之页面表现 模仿qqmail 163mail
- 模仿163上传附件
- 漂亮code的表现
- 网易邮箱的附件上传功能
- springMVC + swfupload 附件上传功能的实现
- springMVC + swfupload 附件上传功能的实现
- 增加附件上传功能
- QQMail Hack——QQ超大附件(中转站)的安全问题
- Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能
- Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能
- Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能
- 发送附件的 mail 类
- 页面打包下载功能(包括页面上带的附件)
- kindeditor 增加附件上传功能
- Jsp实现附件上传功能
- fckeditor 添加上传附件功能
- 处理多附件上传功能
- 多附件上传页面代码
- 还在学日语
- java连接oracle9i以及连接池实现
- 回归csdn
- 日本人收集情报的意识
- Struts中validate的几种情况(转)
- 漂亮的附件上传功能之页面表现 模仿qqmail 163mail
- 正则表达式全部符号解释
- FI--SAP FI-GL的基本知识
- The Full Story on Developing for Media Center in Windows Vista
- 区分重载(overload),覆盖(Override)和隐藏(hide)
- FC7安装MySQL笔记
- Grove—— .Net下的ORM框架
- 泄漏机密? 谷歌地球引发数字世界的纷争
- [转]如何在ubuntu下编译内核