CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

调用 BinaryRead 之后,不能使用 Request.Form 集合

楼主hptnt(小虎)2006-06-03 21:37:17 在 Web 开发 / ASP 提问

我用了无惧上传上传文件,但是同时也想把文件的一些相关信息(如下达时间等)即如数据库,可是系统提示“  
  调用   BinaryRead   之后,不能使用   Request.Form   集合。  
  但我想  
  比如说我又一个textfield,名字是keyword,应该怎么传??  
   
  在提交时设置form1.action='xxxxx.asp?TrueName='+form1.TrueName+'&PassWord='+form1.PassWord;)  
  我试了这种方法也不行,望高手指教。。。。  
  问题点数:20、回复次数:4Top

1 楼AloneSword(孤剑)回复于 2006-06-03 21:42:40 得分 0

binaryread后当然不能request.form了,你看asp帮助系统就知道了!  
  解决方法:  
  风声无组件上传封装的很好,你看看example文件夹下的内容就知道了!Top

2 楼starwx(小行星)回复于 2006-06-03 21:45:43 得分 0

把下面的代码保存成一个upload.inc文件.在接收上传文件的ASP页面中嵌入(include)这个文件.  
   
  upload.inc文件  
  -----------------------------------------------------------  
  <%  
  dim   oUpFileStream  
   
  Class   upload_file  
       
  dim   Form,File,Version  
       
  Private   Sub   Class_Initialize    
        '定义变量  
      dim   RequestBinDate,sStart,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo  
      dim   iFileSize,sFilePath,sFileType,sFormvalue,sFileName  
      dim   iFindStart,iFindEnd  
      dim   iFormStart,iFormEnd,sFormName  
        '代码开始  
      Version="无组件上传类   Version   0.96"  
      set   Form   =   Server.CreateObject("Scripting.Dictionary")  
      set   File   =   Server.CreateObject("Scripting.Dictionary")  
      if   Request.TotalBytes   <   1   then   Exit   Sub  
      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  
      RequestBinDate   =   oUpFileStream.Read    
      iFormEnd   =   oUpFileStream.Size  
      bCrLf   =   chrB(13)   &   chrB(10)  
      '取得每个项目之间的分隔符  
      sStart   =   MidB(RequestBinDate,1,   InStrB(1,RequestBinDate,bCrLf)-1)  
      iStart   =   LenB   (sStart)  
      iFormStart   =   iStart+2  
      '分解项目  
      Do  
          iInfoEnd   =   InStrB(iFormStart,RequestBinDate,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,RequestBinDate,sStart)-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  
              '取得文件属性  
              iFindStart   =   InStr(iFindEnd,sInfo,"filename=""",1)+10  
              iFindEnd   =   InStr(iFindStart,sInfo,"""",1)  
              sFileName   =   Mid   (sinfo,iFindStart,iFindEnd-iFindStart)  
              oFileInfo.FileName   =   GetFileName(sFileName)  
              oFileInfo.FilePath   =   GetFilePath(sFileName)  
              oFileInfo.FileExt   =   GetFileExt(sFileName)  
              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    
              form.Add   sFormName,sFormvalue  
          end   if  
          tStream.Close  
          iFormStart   =   iFormStart+iStart+2  
          '如果到文件尾了就退出  
          loop   until   (iFormStart+2)   =   iFormEnd    
      RequestBinDate=""  
      set   tStream   =   nothing  
  End   Sub  
   
  Private   Sub   Class_Terminate      
      '清除变量及对像  
      if   not   Request.TotalBytes<1   then  
          oUpFileStream.Close  
          set   oUpFileStream   =nothing  
          end   if  
      Form.RemoveAll  
      File.RemoveAll  
      set   Form=nothing  
      set   File=nothing  
  End   Sub  
         
    '取得文件路径  
  Private   function   GetFilePath(FullPath)  
      If   FullPath   <>   ""   Then  
          GetFilePath   =   left(FullPath,InStrRev(FullPath,   "\"))  
          Else  
          GetFilePath   =   ""  
      End   If  
  End   function  
     
  '取得文件名  
  Private   function   GetFileName(FullPath)  
      If   FullPath   <>   ""   Then  
          GetFileName   =   mid(FullPath,InStrRev(FullPath,   "\")+1)  
          Else  
          GetFileName   =   ""  
      End   If  
  End   function  
   
  '取得扩展名  
  Private   function   GetFileExt(FullPath)  
      If   FullPath   <>   ""   Then  
          GetFileExt   =   mid(FullPath,InStrRev(FullPath,   ".")+1)  
          Else  
          GetFileExt   =   ""  
      End   If  
  End   function  
   
  End   Class  
   
  '文件属性类  
  Class   FileInfo  
      dim   FormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt  
      Private   Sub   Class_Initialize    
          FileName   =   ""  
          FilePath   =   ""  
          FileSize   =   0  
          FileStart=   0  
          FormName   =   ""  
          FileType   =   ""  
          FileExt   =   ""  
      End   Sub  
       
  '保存文件方法  
    Public   function   SaveToFile(FullPath)  
          dim   oFileStream,ErrorChar,i  
          SaveToFile=1  
          if   trim(fullpath)=""   or   right(fullpath,1)="/"   then   exit   function  
          set   oFileStream=CreateObject("Adodb.Stream")  
          oFileStream.Type=1  
          oFileStream.Mode=3  
          oFileStream.Open  
          oUpFileStream.position=FileStart  
          oUpFileStream.copyto   oFileStream,FileSize  
          oFileStream.SaveToFile   FullPath,2  
          oFileStream.Close  
          set   oFileStream=nothing    
          SaveToFile=0  
      end   function  
  End   Class  
  %>  
  -----------------------------------------------------------  
   
   
  upload.htm文件(表单)  
  -----------------------------------------------------------  
  <form   method="POST"   enctype="multipart/form-data"   action="upload1.asp">  
  <p   align="center">文件上传</p>  
  <p   align="center">文件名:<input   type="text"   name="T1"   size="20"></p>  
  <p   align="center"><input   type="file"   name="file1"   size="20"></p>  
  <p   align="center">  
  <input   type="submit"   value="提交"   name="B1">  
  &nbsp;&nbsp;&nbsp;&nbsp;  
  <input   type="reset"   value="重置"   name="B2"></p>  
  </form>  
  -----------------------------------------------------------  
   
  uplaod.asp获得数据的文件  
  -----------------------------------------------------------  
  <!--#include   file="upload.inc"-->  
  <%  
  '实例化一个上传类  
  set   upload=new   upload_file  
  set   file=upload.File("file1")  
  filename=upload.Form("T1")  
   
  '得到的文件扩展名,不含有.  
  fileExt=lcase(file.FileExt)  
   
  '如果   FileSize   >   0   说明有文件数据  
  if   file.FileSize>0   and   file.FileSize<1000000   then  
      file.SaveToFile   Server.mappath("upload/"&   filename)  
      response.write   "上传成功"  
  else  
      response.write   "文件无效或超出1MB"      
  end   if  
   
  set   file=nothing  
  -----------------------------------------------------------  
   
  set   upload=nothing  
  %>  
  Top

3 楼ptma(守望者)回复于 2006-06-03 22:23:31 得分 0

用   组件.Form   方法Top

4 楼angelyujun(搁浅的鱼@南昌大学)回复于 2006-06-04 10:05:26 得分 0

用upload.Form("XXX")Top

相关问题

关键词

得分解答快速导航

  • 帖主:hptnt

相关链接

  • Web开发类图书

广告也精彩

反馈

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