通过客户端验证上传图片文件大小的ASP源码

所属分类: 网络编程 / ASP编程 阅读数: 240
收藏 0 赞 0 分享
<%@Language=JScript @CodePage=936%> 
<Script Language=JScript RunAt=Server> 
/****************************************************************\ 
<lostinet:source xmlns:lostinet="lostinet-d2g-com/source"> 
 <lostinet:source-info> 
  <lostinet:name>Lostinet_ASP_Upload的例子-动态表单部分</lostinet:name> 
  <lostinet:description>一个动态的表单的例子</lostinet:description> 
 </lostinet:source-info> 
 <lostinet:author-info> 
  <lostinet:name>Lostinet</lostinet:name> 
  <lostinet:email>lostinet@21cn.com;lostinet@chongjian.com;</lostinet:email> 
  <lostinet:homepage>http://lostinet.d2g.com</lostinet:homepage> 
 </lostinet:author-info> 
 <lostinet:copyright-info> 
  <lostinet:copyright>版权声明:这个软件可以随意发布。也可以根据具体情况进行优化修改。但是请保留作者的相关信息。</lostinet:copyright> 
 </lostinet:copyright-info> 
</lostinet:source> 
\****************************************************************/ 
</Script> 
<SCRIPT RUNAT=Server LANGUAGE=JScript> 
</SCRIPT> 
<HTML> 
 <HEAD> 
 <TITLE>JScript Example Form</TITLE> 
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312" /> 
 </HEAD> 
<STYLE> 
button 

 border:1px gray solid; 

div.form_item 

 width:500px; 
 overflow-x:visible; 
 padding:4px; 
 margin-top:8px; 
 border:2px gray dotted; 

input.file 

 border:1px gray inset; 
 width:400px; 

textarea.info 

 border:1px gray inset; 
 width:400px; 
 SCROLLBAR-FACE-COLOR: #cccccc; 
 SCROLLBAR-HIGHLIGHT-COLOR: WHITE; 
 SCROLLBAR-SHADOW-COLOR: WHITE; 
 SCROLLBAR-ARROW-COLOR: maroon;  
 SCROLLBAR-TRACK-COLOR: #e0e4e4; 
 SCROLLBAR-3DLIGHT-COLOR: #cccccc; 
 SCROLLBAR-DARKSHADOW-COLOR: #cccccc; 
 SCROLLBAR-BASE-COLOR: #cccccc; 

</STYLE> 
<SCRIPT> 
var countImgLoading=0; 
function GetItemDiv(e) 

 while(e=e.parentElement) 
 { 
  if(e.className.toLowerCase()=="form_item") 
  { 
   return e; 
  } 
 } 
 throw(new Error(-1,"Impossible:GetItemDiv发生不能处理的意外")); 

function GetNamedItem(div,name) 

 return div.all(name); 
 throw(new Error(-11,"Impossible:GetNamedItem发生不能处理的意外"+name)); 

function Check_Item(div) 

 var file=GetNamedItem(div,"file"); 
 var info=GetNamedItem(div,"info"); 
 var width=GetNamedItem(div,"width"); 
 var height=GetNamedItem(div,"height"); 
 var preview=GetNamedItem(div,"preview"); 
 if(file.value.replace(/\s/g,"")=="") 
 { 
  file.focus(); 
  return false; 
 } 
 if(info.value.replace(/\s/g,"")=="") 
 { 
  info.focus(); 
  return false; 
 } 
 if(info.value.length>1000) 
 { 
  alert("描述的长度不能超过1000字"); 
  info.focus(); 
  return false; 
 } 
 if(height.value=="0"||width.value=="0") 
 { 
  file.focus(); 
  return false; 
 } 
 if(parseInt(height.value)>800||parseInt(width.value)>600) 
 { 
  alert("图片尺寸大于800X600"); 
  file.focus(); 
  return false; 
 } 
 if(preview.src.toLowerCase().indexOf("file://")!=0) 
 { 
  alert("只能上传本地文件!!\n请把文件框的内容清楚\n然后按浏览"); 
  file.focus(); 
  return false; 
 } 
 if(preview.fileSize==0) 
 { 
  file.focus(); 
  return false; 
 } 
 return preview.fileSize; 

function Check_Form() 

 if(event==null)var event=new Object(); 
 var totalSize=0; 
 var haveItem=false; 
 var coll=form_submit.children; 
 for(var i=0;i<coll.length;i++) 
 { 
  var item=coll.item(i); 
  if(item.className.toLowerCase()=="form_item") 
  { 
   haveItem=true; 
   totalSize=Check_Item(item); 
   if(totalSize==false) 
   { 
    alert("该输入框必须填上正确的内容"); 
    return event.returnValue=false; 
   } 
  } 
 } 
 if(haveItem==false) 
 { 
  Add_FormItem(); 
  return event.returnValue=false; 
 } 
 if(totalSize==0) 
 { 
  alert("不打算上传了");//暂时没有可能执行 
  return event.returnValue=false; 
 } 
 if(totalSize>1024*1024) 
 { 
  alert("不能上传超过1M的数据"); 
  return event.returnValue=false; 
 } 
 btn_submit.disabled=true; 
 return event.returnValue=true; 

function Add_FormItem() 

 form_submit.elements("input_submit").insertAdjacentHTML("beforebegin",form_template.innerHTML); 

function Delete_FormItem() 

 var btn=event.srcElement; 
 GetItemDiv(btn).removeNode(true); 

function Show_Preview() 

 var div=GetItemDiv(event.srcElement); 
 var preview=GetNamedItem(div,"preview"); 
 var file=GetNamedItem(div,"file"); 
 if(preview.readyState=="uninitialized"||preview.readyState=="complate")countImgLoading++; 
 btn_submit.disabled=true; 
 preview.src=file.value; 

function OnPreviewLoad(secceed) 

 btn_submit.disabled=false;//bug:当表单在提交的时候,忽略 
 countImgLoading--; 
 var div=GetItemDiv(event.srcElement); 
 var preview=GetNamedItem(div,"preview"); 
 var height=GetNamedItem(div,"height"); 
 var width=GetNamedItem(div,"width"); 
 if(secceed) 
 { 
  height.value=preview.height; 
  width.value=preview.width; 
 } 
 else 
 { 
  height.value=width.value="0"; 
 } 
 var filesize=GetNamedItem(div,"filesize"); 
 filesize.innerText=Math.floor(preview.fileSize/1024)+"K"; 

function OnPreviewMouseOver(div) 

 if(div.contains(event.fromElement))return; 
 var divItem=GetItemDiv(div); 
 var preview=GetNamedItem(divItem,"preview"); 
 div.style.overflow="visible"; 
 preview.style.position="absolute"; 

function OnPreviewMouseOut(div) 

 if(div.contains(event.toElement))return; 
 var divItem=GetItemDiv(div); 
 var preview=GetNamedItem(divItem,"preview"); 
 div.style.overflow="hidden"; 
 preview.style.position="static"; 

function OnPreviewClick(div) 

 var divItem=GetItemDiv(event.srcElement); 
 var preview=GetNamedItem(divItem,"preview"); 
 div.style.overflow="hidden"; 
 preview.style.position="static"; 

</SCRIPT> 
<BODY> 
 <DIV> 
  <BUTTON ID="btn_add">添加一个需要上传的图片</BUTTON> 
  <BUTTON ID="btn_submit">提交所有内容</BUTTON> 
 </DIV> 
 <DIV> 
 <FORM ID="form_submit" ACTION="e.g.jscript.action.asp" METHOD="POST" ENCTYPE="multipart/form-data" ONSUBMIT="Check_From()"> 
  <INPUT ID="input_submit" TYPE="submit" STYLE="display:none">  
 </FORM> 
 </DIV> 

 <FORM ID="form_template" STYLE="display:none;"> 
  <DIV CLASS="form_item"> 
   <DIV> 
    要上传图片(<SPAN id="filesize"></SPAN>)的路径:&nbsp;&nbsp;&nbsp;&nbsp;<BUTTON CLASS="delete" ONCLICK="Delete_FormItem()">删除</BUTTON> 
   </DIV> 
   <DIV STYLE="border:1px orange solid;width:200px;height:50px;overflow:hidden;" ONMOUSEOVER="OnPreviewMouseOver(this)" ONMOUSEOUT="OnPreviewMouseOut(this)" ONCLICK="OnPreviewClick(this)"> 
    <INPUT TYPE="hidden" NAME="width" VALUE="0"> 
    <INPUT TYPE="hidden" NAME="height" VALUE="0"> 
    <IMG ID="preview" STYLE="position:static" ONLOAD="OnPreviewLoad(true)" ONERROR="OnPreviewLoad(false)"> 
   </DIV> 
   <DIV> 
    <INPUT TYPE="file" NAME="file" CLASS="file" ONCHANGE="Show_Preview()"> 
   </DIV> 
   <DIV> 
    相关的描述: 
   </DIV> 
   <DIV> 
    <TEXTAREA NAME="info" CLASS="info" ROWS="4"></TEXTAREA> 
   </DIV> 
  </DIV> 
 </FORM> 
</BODY> 
<SCRIPT> 
Add_FormItem(); 
function btn_add.onclick() 

 Add_FormItem(); 

function btn_submit.onclick() 

 if(Check_Form()) 
  form_submit.submit(); 

</SCRIPT> 
</HTML>
更多精彩内容其他人还在看

asp知识整理笔记4(问答模式)

这是关于asp知识整理的最后一份笔记,希望大家仔细阅读。
收藏 0 赞 0 分享

ASP基础知识VBScript基本元素讲解

这篇文章主要介绍了ASP基础知识VBScript基本元素的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

ASP编码和解码函数详解

这篇文章主要介绍了ASP编码和解码函数的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

ASP显示页面执行时间的方法

这篇文章主要介绍了ASP显示页面执行时间的方法,在本地测试一下输出页面需要多少时间,需要的朋友可以参考下
收藏 0 赞 0 分享

ASP基础入门第一篇(ASP技术简介)

本文将以 Active Server Pages 为中心,向你全面展示制作动态商业网站的步骤和技巧并通过大量的实例,让你在不断的理论和实践之中笑傲“网络”……
收藏 0 赞 0 分享

ASP基础入门第二篇(ASP基础知识)

这篇文章是ASP基础入门第二篇,第一篇展示了ASP动态网站设计的一些最基本的方法,相信通过实践各位对 ASP 已经有了最基本的了解,本文将进一步介绍ASP动态网站的一些基本技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

ASP基础入门第三篇(ASP脚本基础)

通过前两篇的学习,相信各位已经对 ASP 的动态网站设计有了一个基本的概念和整体的印象。从本篇开始作者将从脚本语言的使用着手,由浅入深地带领大家探索 ASP 动态网站设计的真正奥秘。
收藏 0 赞 0 分享

ASP基础入门第四篇(脚本变量、函数、过程和条件语句)

大家在学习了脚本语言 VBScript 的变量、常量和过程的基本概念后,本期将继续向各位介绍 VBScript 的函数和语法。
收藏 0 赞 0 分享

ASP基础入门第五篇(ASP脚本循环语句)

在本文上两篇中,我们学习了脚本语言 VBScript 的变量、函数、过程和条件语句,本篇将继续给大家介绍 VBScipt 的循环语句,并对脚本语言在 ASP 中的应用加以总结。  
收藏 0 赞 0 分享

ASP基础入门第六篇(ASP内建对象Request)

从本篇开始作者从 ASP 内建对象着手,为大家详细剖析 ASP 的六个内建对象和各种组件的特性和方法,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多