热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

提示不能调用BinaryRead,请哪位大哥帮忙改一下下面的源代码。

调试一个博客发表的程序,不知为什么,总是提示错误信息如下:“Request对象,ASP0206(0x80004005)使用Request.Form集合之后,不能调用BinaryR
调试一个博客发表的程序,不知为什么,总是提示错误信息如下:

“Request 对象, ASP 0206 (0x80004005)使用 Request.Form 集合之后,不能调用 BinaryRead。”

我在网上查询后,得知使用request集合,就不能调用BinaryRead.,不知道是否这个原因。

请哪位大哥帮忙改一下下面的源代码。


<%
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
%>

7 个解决方案

#1


你发人家的类上来干什么,这个无组件上传类肯定是对的

把你使用这个类的页面的代码发上来

如果你把表单的enctype设置了"multipart/form-data"后,在使用request.form("xxx")后不肯定不能再使用BinaryRead了

#2


抱歉,我是只小菜鸟而已,我把表单的enctype改成了 "application/x-www-form-urlencoded"还是不行啊,况且还要上传张头像。

下面是网页的代码:我是刚来的,多多帮忙了!谢谢!



">


   
           发布新文章

      
        
          
        
        
          *文章标题:

          
          ')"> *文章标题为必填,字数限定在3~50个汉字,即6~100个英文字符。
        
        
          *文章类别:

          
              -选择文章类别-
              <%
  Sql="Select * From D_blogsort Where(User_ID = "&str_AdminUserID&" And Sort_ID=0)Or(Sort_Type=1 And Sort_ID=0) Order by Numbers Asc"
  rs.Open Sql,Conn,1,1
  If Not(rs.Eof And rs.Bof) Then
  do while(Not rs.Eof)%>
              "><%=rs("Title")%>
              <%
rs.MoveNext
If rs.Eof Then Exit Do
Loop
End If 
rs.Close
%>
            
             文章类别设置
        
        
          *今日天气:

          
              
              
              
              
              
              
              
              
              
              
              
              
              
              
               

        
        
          *显示选项:
          
            只发布在博客
            
            同时发布到社区
            
            私人文章
        
        
          *社区版块:
          
              <%
   Set rs_s=Server.CreateObject("ADODB.Recordset")
   Sql_s="Select * From D_bbs_type Order by Numbers Asc"
   rs_s.Open Sql_s,Conn,1,1
   If Not(rs_s.Eof And rs_s.Bof) Then
   Do While(Not rs_s.Eof)
   Menu_name_s = Trim(rs_s("Title"))
   fid = Trim(rs_s("ID")) 
            %>
              ">  > <%=Menu_name_s%>
              <%   
   rs_s.MoveNext
   If rs_s.Eof Then Exit Do
   Loop
   End If
   rs_s.Close
    %>
          
        
        
          图片:
          
          上传gif,jpg格式图片,文件大小不超过200KB。
        
        
          *内容:

                

            编辑器
          
        
    



 



#3


使用上传类的页面的代码........
汗,怎么发了选择上传的页面?


post_diary.asp?submit=yes  这个页面

#4


这是这个类之前的代码:





<%
If Request("submit") = "yes" Then
Call GetRandomize() '调用随机函数
ranFileName = GetRandomize
Set My_UpLoad=new upload_file
Title = ReplaceTitle(Trim(My_UpLoad.Form("Title")))
Content = Trim(My_UpLoad.Form("Body"))
AdminUserID = Trim(My_UpLoad.Form("AdminUserID"))
Sort_ID = Trim(My_UpLoad.Form("Sort_ID"))
srchfid = Trim(My_UpLoad.Form("srchfid"))
log_weather = Trim(My_UpLoad.Form("log_weather"))
Bbs_show = Trim(My_UpLoad.Form("Bbs_show"))
If Bbs_show = "" Then Bbs_show = 1 End If

If Not(IsNum(AdminUserID)) Then 
      Call bbs_ErrorMessage("会员ID传递数据丢失~~,请确定返回上一页。")
      Response.End()
End If
filepath="upfile/"

Set File=My_UpLoad.File("files")
If File.fileSize>0 Then
     '利用随机产生一列数字作为文件名
     FileName=ranFileName+"."
     filenameEnd=File.FileName
'确定扩展名
     filenameEnd=Split(filenameEnd,".")
     n=UBound(filenameEnd)
'文件名+扩展名
     FileName=FileName&filenameEnd(n)
     If LCase(filenameEnd(n))<>"gif" And LCase(filenameEnd(n))<>"jpg" Then
        Response.Write("")
Response.End()
ElseIf File.fileSize > (200*1024) Then
Response.Write("")
    Response.End()
End If

'设置保存路径
year1 = Year(Now())
month1 = Month(Now())
If Cint(month1)<10 Then month1="0"&month1
day1 = Day(Now())
If Cint(day1)<10 Then day1="0"&day1
hour1=Hour(Now())
If Cint(hour1)<10 Then hour1="0"&hour1
minute1=Minute(Now())
If Cint(minute1)<10 Then minute1="0"&minute1
If Cint(second1)<10 Then second1="0"&second1

Set fso = Server.CreateObject("Scripting.FileSystemObject")
strfolder=year1&"-"&month1&"-"&day1&""
If Not fso.folderexists(Server.MapPath("../bbs/"&filepath&strfolder)) Then
   fso.CreateFolder(Server.MapPath("../bbs/"&filepath&strfolder))
End If
'filepath=strDir&"/"&filepath '文件保存路径
SavefullPath = "../bbs/"&filepath&strfolder&"/"&FileName
File.SaveToFile Server.MapPath(SavefullPath)
photopath = filepath&strfolder&"/"&FileName
Else
photopath = ""
End If
Set My_UpLoad=Nothing


Sql="Select * From D_blogdiary"
rs.Open Sql,Conn,1,3
rs.AddNew
rs("User_ID") = AdminUserID
rs("Sort_ID") = Sort_ID
rs("Title") = Title
rs("Content") = Content
rs("Createtime") = Now()
rs("Bbs_show") = Bbs_show
rs("Log_weather") = log_weather
rs("Photopath") = photopath
rs.Update
rs.Close
Conn.Execute("Update D_Member Set UserLife=UserLife+"&Post_Integral_calculus&",U_Integral=U_Integral+"&Post_Integral_calculus&" Where ID = "&AdminUserID&"")
'记录积分(谁操作,给谁加分,1=扣分0=加分,积分数,记录说明)
Call Add_Integral(AdminUserID,AdminUserID,0,Post_Integral_calculus,"博客发布新文章 - 主题["&Title&"]")

If Int(Bbs_show) = 2 Then
'写入论坛帖子
Sql="Select * From D_bbsforum"
rs.Open Sql,Conn,1,3
rs.Addnew
rs("User_ID") = AdminUserID
rs("Sorttwo") = srchfid
rs("Postip") = Request.ServerVariables("Remote_HOST")
rs("Topic") = ReplaceTitle(Title)
rs("Facial") = "0"
rs("Content") = Content
rs("Posttime") = Now()
rs("Pic_x") = photopath

'首先默认最后回复用户为发表人
rs("Lastuser") = petname
rs("Lasttime") = Now()
rs.Update
rs.Close
'更新访会员发表原帖数,加上经验值和体力值
Conn.Execute("Update D_Member Set UserLife=UserLife+"&Post_Integral_calculus&",U_Integral=U_Integral+"&Post_Integral_calculus&",Posttopic=Posttopic+1 Where ID = "&AdminUserID&"")
Call Add_Integral(AdminUserID,AdminUserID,0,Post_Integral_calculus,"社区发布新帖 - 主题["&Title&"]")

End If
Response.Write("")
Response.End()
End If
%>












  
    文章分类设置
    我要发布文章
已发布文章
     
  
  
    
  

#5


If   Request( "submit ")   =   "yes "   Then  =======>>这里使用了request了,所以无法使用binaryread
Call   GetRandomize()   '调用随机函数 
ranFileName   =   GetRandomize 
Set   My_UpLoad=new   upload_file  ==========>这里的类使用了binaryread

#6


应该怎么改呢?这里如果不用request那怎么办???谢谢啊!

#7


删除
If   Request( "submit ")   =   "yes "   Then 

和这个语句的结尾 end if


或者你需要验证submit时,可以将这个值加入session中,在binaryread前可以使用session但不能使用request.form这种代码

推荐阅读
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom&amp;quot;echarts&amp;quot;;4、如果用到map(地图),还 ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • 字节流(InputStream和OutputStream),字节流读写文件,字节流的缓冲区,字节缓冲流
    字节流抽象类InputStream和OutputStream是字节流的顶级父类所有的字节输入流都继承自InputStream,所有的输出流都继承子OutputStreamInput ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • Leetcode学习成长记:天池leetcode基础训练营Task01数组
    前言这是本人第一次参加由Datawhale举办的组队学习活动,这个活动每月一次,之前也一直关注,但未亲身参与过,这次看到活动 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 开发日志:高效图片压缩与上传技术解析 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 在 Vue 项目中,为了提高页面加载速度和优化用户体验,实现图片上传前的压缩处理至关重要。本文介绍了如何通过集成第三方库和自定义组件,有效减小图片文件大小,确保在不影响图像质量的前提下,提升应用性能。 ... [详细]
  • PHP图床源码:集成化图床管理系统解决方案
    本项目提供了一套集成化的图床管理系统解决方案,适用于需要高效管理图片资源的场景。系统结构简洁,无需复杂的后台支持。主要文件包括 `huluxia.php`、`index.html`、`inews.php`、`kw.php` 和 `zz.php`,每个文件都承担了特定的功能,确保系统的稳定运行和易用性。 ... [详细]
author-avatar
奥奥奥尼瀚
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有