CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

asp中,如何验证上传的图片是.jpg格式

楼主zhhl(张海龙)2004-12-01 09:49:57 在 Web 开发 / ASP 提问

asp中,如何验证上传的图片是.jpg格式,要求通过文件流来判断. 问题点数:20、回复次数:13Top

1 楼lingyun2111(凌云)回复于 2004-12-01 09:51:33 得分 2

取得文件名的右边三位,比较判断Top

2 楼zhhl(张海龙)回复于 2004-12-01 09:59:06 得分 0

那样的话,如果文件为.gif的文件改为.jpg也可以上传了Top

3 楼lijun355(孤)回复于 2004-12-03 10:28:03 得分 2

建议参照“动网7.0sp2”的UPLOAD文件类型判断!  
   
  应该是比较完善的了!Top

4 楼huhanshan013(飞兵团将军)回复于 2004-12-03 10:42:01 得分 2

组建上传:   有相应字段是   后缀名的字段。  
   
  无组建上传,你自己定义后缀。如果是ASP教本,你定义了JPG类型,目前我所知道的情况下,教本是无法执行的!Top

5 楼xiaopar(心晴)回复于 2004-12-03 10:49:48 得分 0

.gif改成.jpg当然可以传了,但是你改了后图片还能打开吗,如果要能显示的图片你把.gif转换成.jpg那有什么关系吗Top

6 楼zhhl(张海龙)回复于 2004-12-03 11:02:12 得分 0

我知道可以通过stream可以控制上传图片的格式,还有没有别的方法没有?Top

7 楼lanren007(懒人)回复于 2004-12-03 11:04:57 得分 0

网上多的是,你用google收一下.Top

8 楼echina(IT少帅)回复于 2004-12-03 11:23:25 得分 2

取相应字段是   后缀名的(3个)Top

9 楼yu_yu(※穷凶极恶※)回复于 2004-12-03 11:45:34 得分 0

关注Top

10 楼again_gyf()回复于 2004-12-03 12:47:17 得分 0

upfilename   =   split(file.FileName,".")  
  upfileext   =   upfilename(ubound(upfilename))Top

11 楼tddw(承接各种项目)回复于 2004-12-03 13:17:57 得分 2

if   right("文件名",4)   <>   ".jpg"   then  
  出错  
  end   ifTop

12 楼iuhxq(小灰)回复于 2004-12-03 13:45:38 得分 10

<%   @   LANGUAGE="VBSCRIPT"   CODEPAGE="936"%>  
  <%Option   Explicit  
  Class   BoxInfoImg  
  '传输类的使用方法  
  '图象上传和上传信息获取CLASS  
   
  '用法:  
  'dim   imgUp  
  'set   imgUp=new   BoxInfoImg  
   
  '属性:    
  'imgUp.width   '宽  
  'imgUp.height   '高  
  'imgUp.imgSize   '大小  
  'imgUp.imgType   '类型  
  'imgUp.imgName   '文件名  
  'imgUp.imgName   '图像文件名:"&  
  'imgUp.filename   '文件名"&  
  'imgUp.extName   '扩展名"  
  'imgUp.DiskPath   '保存位置"  
  'imgUp.XuPath   '虚拟路径"  
  'imgUp.NewUrl   '保存后url"  
  'imgUp.SaveMode   '保存后url"  
   
  '方法:  
  'imgUp.saveImg(fullpath)   '保存图像文件  
   
  dim   ADOS  
  dim   width,height,imgSize,imgType,imgName,fileName  
  dim   preName,extName  
  dim   SavePath,SaveName,SaveMode  
  dim   DiskPath,XuPath,NewUrl  
  dim   textStr  
  dim   i  
   
  Private   Sub   Class_Initialize  
  set   ADOS=Server.CreateObject("Adodb.Stream")  
  ADOS.Type=1    
  ADOS.Mode=3    
  ADOS.Open    
  getImageSize  
  End   Sub  
   
  Private   Sub   Class_Terminate  
  ADOS.close  
  set   ADOS=nothing  
  End   Sub  
   
  Public   Function   getImageSize()    
   
  dim   ret(3),bFlag,fdata,fsize  
   
  fdata=GetWebData(GetStrUrl)   '取得XmlHttp数据  
  fsize=clng(lenb(fdata))   '取得数据尺寸  
   
   
  if   fsize=0   then    
  exit   function    
  R_write   "无有效数据保存",0  
  end   if  
   
  ADOS.Write   fdata    
  ADOS.Position=0  
   
  SaveName=iSaveName  
  SavePath=iSavePath  
  SaveMode=iSaveMode  
   
  '写文本对象读取图像长宽和类型  
   
  ADOS.Position=0   '重置数据开始位置    
  bFlag=ADOS.read(3)  
   
  if   isNull(bFlag)   then    
  width=0  
  height=0  
  imgSize=0  
  imgType="unknow"  
  ret(0)=imgType:ret(1)=width:ret(2)=height:ret(3)=""  
  getimagesize=ret  
  exit   function  
  end   if  
   
  '取文件类型和长宽  
  select   case   hex(binVal(bFlag))  
  case   "4E5089":  
  ADOS.read(15)  
  ret(0)="png"  
  ret(1)=BinVal2(ADOS.read(2))  
  ADOS.read(2)  
  ret(2)=BinVal2(ADOS.read(2))  
  case   "464947":  
  ADOS.read(3)  
  ret(0)="gif"  
  ret(1)=BinVal(ADOS.read(2))  
  ret(2)=BinVal(ADOS.read(2))  
  case   "FFD8FF":  
  dim   p1  
  do    
  do:   p1=binVal(ADOS.Read(1)):   loop   while   p1=255   and   not   ADOS.EOS  
  if   p1>191   and   p1<196   then   exit   do   else   ADOS.read(binval2(ADOS.Read(2))-2)  
  do:p1=binVal(ADOS.Read(1)):loop   while   p1<255   and   not   ADOS.EOS  
  loop   while   true  
  ADOS.Read(3)  
  ret(0)="jpg"  
  ret(2)=binval2(ADOS.Read(2))  
  ret(1)=binval2(ADOS.Read(2))  
  case   else:  
  if   left(Bin2Str(bFlag),2)="BM"   then  
  ADOS.Read(15)  
  ret(0)="bmp"  
  ret(1)=binval(ADOS.Read(4))  
  ret(2)=binval(ADOS.Read(4))  
  else  
  ret(0)=""  
  end   if  
  end   select  
  '  
  dim   tempStr  
  dim   nameStr  
  dim   defaultName  
  dim   ln  
  tempStr=split(GetStrUrl,"/")  
  nameStr=tempStr(ubound(tempStr))  
  if   nameStr=""   then  
  r_write   "错误的URL,请输入可访问的URL",0  
  exit   function  
  end   if  
  fileName=split(nameStr,"?")(0)  
  ln=inStrRev(fileName,".")  
  if   ln>0   then    
  preName=left(fileName,inStrRev(fileName,".")-1)  
  else  
  preName=fileName  
  end   if  
  'R_write   fileName,1  
  'R_write   inStrRev(fileName,"."),1  
  'R_write   fileName,0  
  extName=right(fileName,len(fileName)-inStrRev(fileName,"."))  
   
  Select   case   ret(0)  
  case   "png","jpg","bmp","gif","swf"  
  width=ret(1)  
  height=ret(2)  
  imgSize=fsize  
  imgType=ret(0)  
  imgName=preName&"."&ret(0)  
  case   else  
  width=0  
  height=0  
  imgSize=fsize  
  imgName="unknow"  
  imgType=".unknow"  
  end   select  
   
  if   SaveMode="1"   then  
  defaultName=imgName  
  if   SaveName=""   then    
  SaveName=defaultName  
  else  
  if   lcase(right(SaveName,4))<>"."&imgType   then  
  SaveName=SaveName&"."&imgType  
  end   if  
  end   if  
  else  
  defaultName=filename  
  end   if  
  if   SaveName=""   then   SaveName=defaultName  
  SavePath=replace(SavePath,"//","/")  
  if   right(SavePath,1)<>"/"   then   SavePath=SavePath&"/"  
  if   SavePath=""   then   SavePath="./"  
  DiskPath=server.mappath(SavePath&SaveName)  
  XuPath=replace(replace(DiskPath,server.mappath("/"),""),"\","/")  
  NewUrl="http://"&Request.ServerVariables("SERVER_NAME")&XuPath  
   
  getimagesize=ret  
  End   Function  
   
  Public   function   SaveImg(FullPath)  
  SaveImg=false  
  if   SaveMode="1"   then  
  if   trim(fullpath)=""   or   _  
  width=0   or   _    
  height=0   or   _  
  imgSize=0   or   _  
  imgType=".unknow"   then   exit   function   end   if  
  end   if  
  ADOS.Position=0  
  if   SaveMode="2"   then  
  ADOS.Type=2  
  ADOS.Charset   ="gb2312"  
  ADOS.SaveToFile   FullPath,2  
  textStr=ADOS.readtext()  
  else  
  ADOS.SaveToFile   FullPath,2  
  end   if  
  SaveImg=true  
  End   function  
   
  Private   Function   Bin2Str(Bin)  
  Dim   I,Str,clow  
  For   I=1   to   LenB(Bin)  
  clow=MidB(Bin,I,1)  
  if   ASCB(clow)<128   then  
  Str   =   Str   &   Chr(ASCB(clow))  
  else  
  I=I+1  
  if   I   <=   LenB(Bin)   then   Str   =   Str   &   Chr(ASCW(MidB(Bin,I,1)&clow))  
  end   if  
  Next    
  Bin2Str   =   Str  
  End   Function  
   
  Private   Function   Num2Str(num,base,lens)  
  dim   ret:ret   =   ""  
  while(num>=base)  
  ret=(num   mod   base)   &   ret  
  num=(num   -   num   mod   base)/base  
  wend  
  Num2Str   =   right(string(lens,"0")   &   num   &   ret,lens)  
  End   Function  
   
  Private   Function   Str2Num(str,base)  
  dim   ret:ret   =   0  
  for   i=1   to   len(str)  
  ret   =   ret   *base   +   cint(mid(str,i,1))  
  next  
  Str2Num=ret  
  End   Function  
   
  Private   Function   BinVal(bin)  
  dim   ret:ret   =   0  
  for   i   =   lenb(bin)   to   1   step   -1  
  ret   =   ret   *256   +   ascb(midb(bin,i,1))  
  next  
  BinVal=ret  
  End   Function  
   
  Private   Function   BinVal2(bin)  
  dim   ret:ret   =   0  
  for   i   =   1   to   lenb(bin)  
  ret   =   ret   *256   +   ascb(midb(bin,i,1))  
  next  
  BinVal2=ret  
  End   Function  
   
  Private   Function   GetWebData(byval   StrUrl)  
  if   StrUrl=""   then    
  r_write   "无效",1  
  exit   function  
  end   if  
  dim   tempStr  
  tempStr=split(GetStrUrl,"/")  
  if   tempStr(ubound(tempStr))=""   or   inStr(StrUrl,"/")=0   then  
  R_Write   "未指定有效的URL",0  
  exit   function  
  end   if  
  dim   Retrieval  
  Set   Retrieval   =   Server.CreateObject("Microsoft.XMLHTTP")  
  With   Retrieval  
  .Open   "Get",   StrUrl,   False,   "",   ""  
  .Send  
  GetWebData   =.ResponseBody  
  End   With  
  Set   Retrieval   =   Nothing  
  End   Function    
   
  End   Class  
  %>  
  <%  
  SUB   saveUpload(GetUrl,SavePath,SaveName,mode)  
  dim   chkInfo  
   
  if   GetUrl=""   then    
  call   tform()  
  R_Write   "<br>传输文件栏没有填写!",0  
  end   if  
   
  set   imgUp=new   BoxInfoImg  
   
  if   mode="1"   and   imgUp.imgName="unknow"   then  
  call   tform()  
  set   imgUp=nothing  
  R_Write   "<br>传输文件栏没有填写有效的图像URL!",0  
  end   if  
   
  chkInfo=""  
  dim   i,testStr,showStr  
  '限定格式  
  select   case   imgUp.imgType  
  case   "png","jpg","bmp","gif"  
  if   imgUp.width=0   or   imgUp.height=0   or   imgUp.imgSize=0   then    
  chkInfo="<li>"+"传输图像数据不存在,请确定你的URL是否正确"  
  end   if  
  case   else    
  chkInfo="<li>无效的传输格式,允许图像数据格式为   ""png"",""jpg"",""bmp"",""gif""</li>"  
  end   select  
   
  'R_Write   SavePath,1  
  'R_Write   mode,1  
  'R_Write   imgUp.imgName,1  
  'R_Write   imgUp.filename,1  
  'R_Write   "SaveName="&SaveName,1  
   
  if   mode="1"   and   chkInfo<>""   then   '检查上传图像数据合格后,则保存之  
  call   tform()  
  R_Write   chkInfo,0  
  else  
  Server.ScriptTimeOut=5000  
  imgUp.saveImg   imgUp.DiskPath    
  end   if  
  '-------------  
  R_write   "<b>===处理结果部分资料===</b><br>",1  
  R_write   "  宽:"&imgUp.width&"   pix",1  
  R_write   "  高:"&imgUp.height&"   pix",1  
  R_write   " 大小:"&formatnumber(imgUp.imgSize/1024,2,-1)&"   KB",1  
  R_write   " 格式:"&imgUp.imgType,1  
  R_write   "图像文件名:"&imgUp.imgName,1  
  R_write   "文件名:"&imgUp.filename,1  
  R_write   "扩展名:"&imgUp.extName,1  
  R_write   "保存位置:"&imgUp.DiskPath,1  
  R_write   "虚拟路径:"&imgUp.XuPath,1  
  R_write   "保存后url:"&imgUp.NewUrl,1  
  call   tform()  
  set   imgUp=nothing    
  R_write   "------------------------<br>传输完毕",0  
  End   SUBTop

13 楼zhhl(张海龙)回复于 2004-12-03 16:44:50 得分 0

谢谢大家  
  Top

相关问题

  • 如何识别jpg格式的验证码
  • 如何识别jpg、gif格式的验证码
  • email格式验证
  • email格式验证问题
  • 验证时间格式
  • yyyy-mm-dd格式验证???????????????
  • 日期验证的问题,验证特定格式1982-09-15
  • JPG文件格式?
  • 求验证日期时间格式的javaScript格式为:(2005-0-01)
  • 怎么验证"ASP"!="asP" 呢?

关键词

  • 图像
  • 文件名
  • 文件
  • 数据
  • imgup
  • savename
  • 格式
  • imgsize
  • savepath
  • chkinfo

得分解答快速导航

  • 帖主:zhhl
  • lingyun2111
  • lijun355
  • huhanshan013
  • echina
  • tddw
  • iuhxq

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo