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

困扰我很久了:无组件上传图片

楼主angelyujun(搁浅的鱼@南昌大学)2004-09-04 17:46:25 在 Web 开发 / ASP 提问

请问如何在ASP中实现无组件上传图片啊,也就是如何将图片转换为二进制数据存入数据库?又应该怎样显示这些图片呢? 问题点数:80、回复次数:9Top

1 楼mackyliu(才子-54caizi.com)回复于 2004-09-04 17:49:27 得分 10

说实话,这个是错误的概念,用流方法传到数据库,不用多久,数据库巨大,慢死人。  
  还不如传到某个目录,将地址写入数据库。Top

2 楼syre(神仙)回复于 2004-09-04 17:51:51 得分 0

同意楼上Top

3 楼angelyujun(搁浅的鱼@南昌大学)回复于 2004-09-04 17:54:23 得分 0

那么请教怎样将图片上传到目录呢?可以不用诸如FileSystem、SA-FILEUP之类的组件吗?Top

4 楼mackyliu(才子-54caizi.com)回复于 2004-09-04 17:55:14 得分 10

当然可以,去搜索“风声无组件上传“Top

5 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-04 18:03:29 得分 0

response.binarywrite()Top

6 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2004-09-04 18:04:59 得分 0

response.contentTypeTop

7 楼jiuhexuan(中文)回复于 2004-09-04 18:06:55 得分 50

下面三个文件就可以搞定,仔细研究一下  
  可以用一个框架包含upload_dialog.asp,upload_dialog中包含了一个隐藏表单:DialogType。他就是上传后返回的图片路径及图片名称。注意修改图片的保存路径和包含框架页的form名称应与upfile_load中的form一致。  
  Upload_Dialog.asp  
   
  <html>  
  <head>  
  <title>上传文件</title>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <link   rel="stylesheet"   type="text/css"   href="editor_dialog.css">  
  <SCRIPT   language=javascript>  
  function   check()    
  {  
  var   strFileName=document.form1.FileName.value;  
  if   (strFileName=="")  
  {  
          alert("请选择要上传的文件");  
  document.form1.FileName.focus();  
          return   false;  
      }  
  }  
  </SCRIPT>  
  </head>  
  <body   bgColor=menu   leftmargin="5"   topmargin="0">  
   
  <form   action="Upfile_Dialog.asp"   method="post"   name="form1"   onSubmit="return   check()"   enctype="multipart/form-data">  
      <input   name="FileName"   type="FILE"   class="tx1"   size="35">  
      <input   type="submit"   name="Submit"   value="上传">  
      <input   name="DialogType"   type="hidden"   id="DialogType"   value="<%=trim(request("DialogType"))%>">  
  </form>  
  </body>  
  </html>  
   
  Upfile_Dialog.asp  
   
  <%@language=vbscript   codepage=936   %>  
  <!--#include   file="upfile_class.asp"-->  
  <%  
  const   upload_type=0       '上传方法:0=无惧无组件上传类,1=FSO上传   2=lyfupload,3=aspupload,4=chinaaspupload  
  const   SaveUpFilesPath="*保存路径*"  
  const   UpFileType_pic="jpg|gif|bmp|png"  
  const   UpFileType_flash="swf"  
  const   UpFileType_media="wmv|asf|avi|mpg"  
  const   UpFileType_rm="ram|rm|ra"  
  const   MaxFileSize=102400  
   
  dim   upload,oFile,formName,SavePath,filename,fileExt,oFileSize  
  dim   EnableUpload  
  dim   UpFileType,arrUpFileType  
  dim   ranNum  
  dim   msg,FoundErr  
  dim   DialogType  
  msg=""  
  FoundErr=false  
  EnableUpload=false  
  SavePath   =   SaveUpFilesPath       '存放上传文件的目录  
  if   right(SavePath,1)<>"/"   then   SavePath=SavePath&"/"   '在目录后加(/)  
  %>  
  <html>  
  <head>  
  <title>上传文件</title>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <link   rel="stylesheet"   type="text/css"   href="editor_dialog.css">  
  </head>  
  <body   bgColor=menu   leftmargin="2"   topmargin="5"   marginwidth="0"   marginheight="0">  
  <%  
   
  call   upload_0()     '使用化境无组件上传类  
  %>  
  </body>  
  </html>  
  <%  
  sub   upload_0()         '使用化境无组件上传类  
  set   upload=new   upfile_class   ''建立上传对象  
  upload.GetData(104857600)       '取得上传数据,限制最大上传100M  
  if   upload.err   >   0   then     '如果出错  
  select   case   upload.err  
  case   1  
  response.write   "请先选择你要上传的文件!"  
  case   2  
  response.write   "你上传的文件总大小超出了最大限制(100M)"  
  end   select  
  response.end  
  end   if  
  DialogType=trim(upload.form("DialogType"))  
  select   case   DialogType  
  case   "pic"  
  UpFileType=UpFileType_pic  
  case   "flash"  
  UpFileType=UpFileType_flash  
  case   "media"  
  UpFileType=UpFileType_media  
  case   "rm"  
  UpFileType=UpFileType_rm  
  case   else  
  UpFileType=""  
  end   select  
  for   each   formName   in   upload.file   '列出所有上传了的文件  
  set   ofile=upload.file(formName)     '生成一个文件对象  
  oFileSize=ofile.filesize  
  if   oFileSize<100   then  
  msg="请先选择你要上传的文件!"  
  FoundErr=True  
  elseif   ofilesize>(MaxFileSize*1024)   then  
    msg="文件大小超过了限制,最大只能上传"   &   CStr(MaxFileSize)   &   "K的文件!"  
  FoundErr=true  
  end   if  
   
  fileExt=lcase(ofile.FileExt)  
  arrUpFileType=split(UpFileType,"|")  
  for   i=0   to   ubound(arrUpFileType)  
  if   fileEXT=trim(arrUpFileType(i))   then  
  EnableUpload=true  
  exit   for  
  end   if  
  next  
  if   fileEXT="asp"   or   fileEXT="asa"   or   fileEXT="aspx"   then  
  EnableUpload=false  
  end   if  
  if   EnableUpload=false   then  
  msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:"   &   UpFileType  
  FoundErr=true  
  end   if  
   
   
  strJS="<SCRIPT   language=javascript>"   &   vbcrlf  
  if   FoundErr<>true   then  
  randomize  
  ranNum=int(900*rnd)+100  
  filename=SavePath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt  
   
  ofile.SaveToFile   Server.mappath(FileName)       '保存文件  
   
  response.write   "文件上传成功!"  
  strJS=strJS   &   "parent.document.form1.url.value='"   &   fileName   &   "';"   &   vbcrlf  
  strJS=strJS   &   "parent.document.form1.UpFileName.value='"   &   fileName   &   "';"   &   vbcrlf  
  else  
  strJS=strJS   &   "alert('"   &   msg   &   "');"   &   vbcrlf  
  strJS=strJS   &   "window.location='Upload_Dialog.asp?DialogType="   &   DialogType   &   "';"   &   vbcrlf  
  end   if  
  strJS=strJS   &   "</script>"   &   vbcrlf  
  response.write   strJS  
   
  set   file=nothing  
  next  
  set   upload=nothing  
  end   sub  
  %>Top

8 楼jiuhexuan(中文)回复于 2004-09-04 18:07:02 得分 10

upfile_class.asp  
   
  <%  
  '----------------------------------------------------------------------  
  '转发时请保留此声明信息,这段声明不并会影响你的速度!  
  '*******************       无惧上传类   V1.2     ************************************  
  '作者:梁无惧  
  '网站:http://www.25cn.com  
  '电子邮件:yjlrb@21cn.com  
  '版权声明:版权所有,源代码公开,各种用途均可免费使用,但是修改后必须把修改后的文件  
  '发送一份给作者.并且保留作者此版权信息  
  '**********************************************************************  
  '----------------------------------------------------------------------  
  Dim   oUpFileStream  
  '----------------------------------------------------------------------  
  '文件上传类  
  Class   UpFile_Class  
   
  Dim   Form,File,Version,Err    
   
  Private   Sub   Class_Initialize  
    Version   =   "无惧上传类   Version   V1.2"  
    Err   =   -1  
  End   Sub  
   
  Private   Sub   Class_Terminate      
      '清除变量及对像  
      If   Err   <   0   Then  
          Form.RemoveAll  
          Set   Form   =   Nothing  
          File.RemoveAll  
          Set   File   =   Nothing  
          oUpFileStream.Close  
          Set   oUpFileStream   =   Nothing  
      End   If  
  End   Sub  
         
  Public   Sub   GetData   (MaxSize)  
        '定义变量  
      Dim   RequestBinData,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo  
      Dim   iFileSize,sFilePath,sFileType,sFormValue,sFileName  
      Dim   iFindStart,iFindEnd  
      Dim   iFormStart,iFormEnd,sFormName  
        '代码开始  
      If   Request.TotalBytes   <   1   Then     '如果没有数据上传  
          Err   =   1  
          Exit   Sub  
      End   If  
      If   MaxSize   >   0   Then   '如果限制大小  
          If   Request.TotalBytes   >   MaxSize   Then  
          Err   =   2 '如果上传的数据超出限制  
          Exit   Sub  
          End   If  
      End   If  
      Set   Form   =   Server.CreateObject   ("Scripting.Dictionary")  
      Form.CompareMode   =   1  
      Set   File   =   Server.CreateObject   ("Scripting.Dictionary")  
      File.CompareMode   =   1  
      Set   tStream   =   Server.CreateObject   ("ADODB.Stream")  
      Set   oUpFileStream   =   Server.CreateObject   ("ADODB.Stream")  
      oUpFileStream.Type   =   1  
      oUpFileStream.Mode   =   3  
      oUpFileStream.Open    
      oUpFileStream.Write   Request.BinaryRead   (Request.TotalBytes)  
      oUpFileStream.Position   =   0  
      RequestBinData   =   oUpFileStream.Read    
      iFormEnd   =   oUpFileStream.Size  
      bCrLf   =   ChrB   (13)   &   ChrB   (10)  
      '取得每个项目之间的分隔符  
      sSpace   =   MidB   (RequestBinData,1,   InStrB   (1,RequestBinData,bCrLf)-1)  
      iStart   =   LenB     (sSpace)  
      iFormStart   =   iStart+2  
      '分解项目  
      Do  
          iInfoEnd   =   InStrB   (iFormStart,RequestBinData,bCrLf   &   bCrLf)+3  
          tStream.Type   =   1  
          tStream.Mode   =   3  
          tStream.Open  
          oUpFileStream.Position   =   iFormStart  
          oUpFileStream.CopyTo   tStream,iInfoEnd-iFormStart  
          tStream.Position   =   0  
          tStream.Type   =   2  
          tStream.CharSet   =   "gb2312"  
          sInfo   =   tStream.ReadText              
          '取得表单项目名称  
          iFormStart   =   InStrB   (iInfoEnd,RequestBinData,sSpace)-1  
          iFindStart   =   InStr   (22,sInfo,"name=""",1)+6  
          iFindEnd   =   InStr   (iFindStart,sInfo,"""",1)  
          sFormName   =   Mid     (sinfo,iFindStart,iFindEnd-iFindStart)  
          '如果是文件  
          If   InStr     (45,sInfo,"filename=""",1)   >   0   Then  
              Set   oFileInfo   =   new   FileInfo_Class  
              '取得文件属性  
              iFindStart   =   InStr   (iFindEnd,sInfo,"filename=""",1)+10  
              iFindEnd   =   InStr   (iFindStart,sInfo,"""",1)  
              sFileName   =   Mid     (sinfo,iFindStart,iFindEnd-iFindStart)  
              oFileInfo.FileName   =   Mid   (sFileName,InStrRev   (sFileName,   "\")+1)  
              oFileInfo.FilePath   =   Left   (sFileName,InStrRev   (sFileName,   "\"))  
              oFileInfo.FileExt   =   Mid   (sFileName,InStrRev   (sFileName,   ".")+1)  
              iFindStart   =   InStr   (iFindEnd,sInfo,"Content-Type:   ",1)+14  
              iFindEnd   =   InStr   (iFindStart,sInfo,vbCr)  
              oFileInfo.FileType   =   Mid     (sinfo,iFindStart,iFindEnd-iFindStart)  
              oFileInfo.FileStart   =   iInfoEnd  
              oFileInfo.FileSize   =   iFormStart   -iInfoEnd   -2  
              oFileInfo.FormName   =   sFormName  
              file.add   sFormName,oFileInfo  
          else  
          '如果是表单项目  
              tStream.Close  
              tStream.Type   =   1  
              tStream.Mode   =   3  
              tStream.Open  
              oUpFileStream.Position   =   iInfoEnd    
              oUpFileStream.CopyTo   tStream,iFormStart-iInfoEnd-2  
              tStream.Position   =   0  
              tStream.Type   =   2  
              tStream.CharSet   =   "gb2312"  
              sFormValue   =   tStream.ReadText  
              If   Form.Exists   (sFormName)   Then  
                  Form   (sFormName)   =   Form   (sFormName)   &   ",   "   &   sFormValue  
                  else  
                  form.Add   sFormName,sFormValue  
              End   If  
          End   If  
          tStream.Close  
          iFormStart   =   iFormStart+iStart+2  
          '如果到文件尾了就退出  
      Loop   Until     (iFormStart+2)   >=   iFormEnd    
      RequestBinData   =   ""  
      Set   tStream   =   Nothing  
  End   Sub  
  End   Class  
   
  '----------------------------------------------------------------------------------------------------  
  '文件属性类  
  Class   FileInfo_Class  
  Dim   FormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt  
  '保存文件方法  
  Public   Function   SaveToFile   (Path)  
      On   Error   Resume   Next  
      Dim   oFileStream  
      Set   oFileStream   =   CreateObject   ("ADODB.Stream")  
      oFileStream.Type   =   1  
      oFileStream.Mode   =   3  
      oFileStream.Open  
      oUpFileStream.Position   =   FileStart  
      oUpFileStream.CopyTo   oFileStream,FileSize  
      oFileStream.SaveToFile   Path,2  
      oFileStream.Close  
      Set   oFileStream   =   Nothing    
  End   Function  
     
  '取得文件数据  
  Public   Function   FileData  
      oUpFileStream.Position   =   FileStart  
      FileData   =   oUpFileStream.Read   (FileSize)  
  End   Function  
   
  End   Class  
  %>  
  Top

9 楼wenyang2004(Smoke)回复于 2004-09-04 18:36:40 得分 0

上网查啊,很多的~~~Top

相关问题

  • 如何无组件上传图片啊
  • 无组件上传图片的问题
  • 100分求FSO组件上传图片或无组件上传图片不传到数据库中
  • 如何把图片上传到数据库,不用组件!
  • 关于无组件上传图片中的语句??
  • 老问题 asp 无组件上传图片
  • 关于图片无组件上传的问题。帮忙看看
  • 用LyfUpload组件上传图片时遇到了问题
  • 请教怎样利用jspsmartupload组件上传图片到mysql
  • 求 无组件多图片上传,谢谢,急啊

关键词

得分解答快速导航

  • 帖主:angelyujun
  • mackyliu
  • mackyliu
  • jiuhexuan
  • jiuhexuan

相关链接

  • Web开发类图书

广告也精彩

反馈

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