在 ASP 脚本中组合文件和数据库上传时出错

2024-03-06

我正在使用的“纯 ASP”文件上传脚本给了我一个错误

Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument: 'MidB' 

在这一行(包含文件 clsUpload.asp 的第 103 行):

mstrDelimiter = MidB(mbinData, 1, InStrB(1, mbinData, CRLF) - 1)

当我在同一页面上组合文件上传和数据库上传脚本时。 我认为这可能与类的实例化有关,并且我尝试在整个脚本中保留已建立的类,而不是将其设置为“无”并重新建立它,但这没有任何区别。有任何想法吗?

上传脚本工作正常,只要它们位于单独的页面上,由页面上的前两个表单分别发布(如下)。然而,第三种形式并不成功。 非常感激!

(完整代码如下)

注意:“clsUpload.asp”和“clsField.asp”文件太大,无法发布。 但它们可以在这里找到:

表格页面如下:

 <H2>To Database</H2>
<FORM name="a" id="a" method="post" encType="multipart/form-data" action="ToDatabase.asp">
<INPUT type="File" name="File1">
<INPUT name="Submit" type="submit" value="Upload">
 </FORM>

<H2>To File System</H2>
<FORM name="b" id="b" method="post" encType="multipart/form-data" action="ToFileSystem.asp">
<INPUT type="File" name="File1">
<INPUT name="Submit" type="submit" value="Upload">
</FORM>


<H2>To Both Database and File System</H2>
<FORM name="c" id="c" method="post" encType="multipart/form-data" action="ToDatabaseAndFileSystem.asp">
<INPUT type="File" name="File1">
<INPUT name="Submit" type="submit" value="Upload">
</FORM>


<HR>
<P>
This script provided to you by <A href="http://www.lewismoten.com">Lewis Moten</A>.
Please help me out and link back to my site from your own website, news groups,
postings on other websites, email, etc.
</P>

<p>Database file list below
</p>
<ol>
<%
Dim objUpload
Dim strFileName
Dim objConn
Dim objRs
Dim lngFileID


Set objConn = Server.CreateObject("ADODB.Connection")
Set objRs = Server.CreateObject("ADODB.Recordset")
objConn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" &     Server.MapPath("Files.mdb")
objRs.Open "SELECT * FROM Files", objConn, 2, 2

If Not (objRs.EOF And objRs.BOF) Then
objRs.MoveFirst
Do Until objRs.EOF = True
strFileName=objRs.Fields("FileName").Value
lngFileID = objRs.Fields("FileID").Value
%>
<li><A href="DataFile.asp?FileID=<%=lngFileID%>"><%=strFileName%></A></li>
<br />
<%
    objRs.MoveNext
Loop
Else
response.write("MsgBox """ & "There are not records in the recordset." & """<"&"/script>")
End If



objRs.Close
Set objRs = Nothing
Set objConn = Nothing
Set objUpload = Nothing
%>
</ol>

表单处理页面(组合)

 <!--#INCLUDE FILE="clsUpload.asp"-->
 <%
 Dim objUpload
 Dim strFileName
 Dim objConn
 Dim objRs
 Dim lngFileID
 Dim strPath


 '///database upload section - begin///
 ' Instantiate Upload Class
 Set objUpload = New clsUpload

 ' Grab the file name
 strFileName = objUpload.Fields("File1").FileName
 strLength = objUpload.Fields("File1").Length


 Set objConn = Server.CreateObject("ADODB.Connection")
 Set objRs = Server.CreateObject("ADODB.Recordset")

 ' Sometimes I personally have errors with one method on different servers, but the      other works.
 objConn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("Files.mdb")
 'objConn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Files.mdb")

 'objRs.Open "Files", objConn, 3, 3
 objRs.Open "Files", objConn, 2, 2

 objRs.AddNew

 objRs.Fields("FileName").Value = objUpload.Fields("File1").FileName
 objRs.Fields("FileSize").Value = objUpload.Fields("File1").Length
 objRs.Fields("ContentType").Value = objUpload.Fields("File1").ContentType
 objRs.Fields("BinaryData").AppendChunk objUpload("File1").BLOB & ChrB(0)

 objRs.Update

 objRs.Close

 'objRs.Open "SELECT Max(FileID) AS ID FROM Files", objConn, 3, 3
 objRs.Open "SELECT Max(FileID) AS ID FROM Files", objConn, 2, 2
 lngFileID = objRs.Fields("ID").Value
 objRs.Close


 Set objRs = Nothing
 Set objConn = Nothing
 Set objUpload = Nothing
 %>
 File has been saved in database.<BR>
 <BR>
 View this file:<BR>
 <BR>
 <A href="DataFile.asp?FileID=<%=lngFileID%>"><%=strFileName%></A>

 '///database upload section - end///






 '///file server upload section - begin///
 <%
 ' Instantiate Upload Class
 Set objUpload = New clsUpload

 ' Grab the file name
 strFileName = objUpload.Fields("File1").FileName
 ' Compile path to save file to
 strPath = Server.MapPath("Uploads") & "\" & strFileName
 ' Save the binary data to the file system
 objUpload("File1").SaveAs strPath




 ' Release upload object from memory
 Set objUpload = Nothing

 MyVariable = strFileName
 Response.Write "<script type='text/javascript'>alert('" & MyVariable & "');</script>"
 %>
 File has been saved in file system.<BR>
 <BR>
 View this file:<BR>
 <BR>
 <A href="Uploads\<%=strFileName%>">Uploads\<%=strFileName%></A>

 <!-- /////////////////////////////////////////////////// -->


 '///file server upload section - begin///




 <ol>
 <%
 Set objConn = Server.CreateObject("ADODB.Connection")
 Set objRs = Server.CreateObject("ADODB.Recordset")
 objConn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("Files.mdb")
 objRs.Open "SELECT * FROM Files", objConn, 2, 2

 If Not (objRs.EOF And objRs.BOF) Then
objRs.MoveFirst
Do Until objRs.EOF = True
 strFileName=objRs.Fields("FileName").Value
 lngFileID = objRs.Fields("FileID").Value%>
 <li><A href="DataFile.asp?FileID=<%=lngFileID%>"><%=strFileName%></A></li>
 <br />
 <%
    objRs.MoveNext
Loop
 Else
MsgBox "There are not records in the recordset."
 End If



 objRs.Close
 Set objRs = Nothing
 Set objConn = Nothing
 Set objUpload = Nothing
 %>
 </ol>

问题出在 clsField.vbs 文件中

如果路径不包含“\”,则文件名字段保持空白:

我建议在 if 语句中添加一个 else 条件,如下所示:

    ' Parse File Name
    If Not InStrRev(pstrPath, "\") = 0 Then
        FileName = Mid(pstrPath, InStrRev(pstrPath, "\") + 1)
    else
        FileName = pstrPath
    End If
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP 脚本中组合文件和数据库上传时出错 的相关文章

  • vbscript 使用 Ccur 四舍五入到小数点后两位

    我在用CCur 代替CDbl 正如这个问题中的回答 vbscript 数学表达式不起作用 https stackoverflow com questions 13569944 vbscript mathematical expression
  • 经典 ASP 中的超时问题

    我正在开发一个经典的 ASP 项目 在从数据库填充数据并将其绑定到 UI 中时遇到超时问题 我们得到以下错误 脚本超时 超出了脚本执行的最长时间 您可以通过为 Server Scripttimeout 属性指定新值或更改 IIS 作为管理工
  • 将base64图像上传到亚马逊s3

    我在尝试将图像上传到 AWS S3 时遇到一些问题 似乎可以正确上传文件 但是每当我尝试下载或预览时 它都无法打开 目前 这是我正在使用的上传代码
  • 经典 ASP 的 Request.Form 会丢失 8 位字符 - 有没有简单的方法来防止这种情况发生?

    我的一个客户正在使用经典 ASP 脚本来处理来自第三方支付处理器的表单 这是信用卡交易序列的最后一步 从客户的网站开始 转到第三方网站 然后返回到客户站点 客户位于奥地利 当其中一个字段包含 8 位字符时 例如 当字段值为 sterreic
  • Multer文件上传错误,请求挂起

    我以前从未写过问题 因为我总是在提问之前在这里找到问题的答案 然而 我在 Express 上的文件上传 POST 路由上的 fileFilter 函数上遇到了困难 我在路由中使用了 multer 上传功能 也作为中间件 后面有一个错误处理中
  • 如何从 vbs 脚本发送电子邮件

    如何从 vbs 脚本发送电子邮件 在无法连接到互联网的计算机上 位于我的非互联网区域 我通过谷歌搜索将以下内容整合在一起 但似乎需要调用微软的服务器 如果我无法访问 microsoft com 该怎么办 sch http schemas m
  • 上传数据到Meteor/Mongodb

    我有一个 Meteor 应用程序 想将数据 从 csv 上传到流星集合 我已经发现 解决方案 例如集合fs https github com CollectionFS Meteor CollectionFS 处理文件上传 方法用于直接上传
  • 使用 PHP 从 S3 获取视频并上传到 YouTube

    我有一些代码可以将视频文件上传到 YouTube yt new Zend Gdata YouTube httpClient create a new VideoEntry object myVideoEntry new Zend Gdata
  • 文件上传 API:多部分/表单数据与正文中的原始内容?

    我注意到 至少 有两种方法可以通过 API 将文件上传到 HTTP 服务器 您可以使用multipart form data 这是浏览器本机对文件上传 HTML 输入所做的操作 但您也可以POST请求正文中的文件内容 可能具有正确的 Con
  • 如何将图像路径和名称上传到数据库 - Codeigniter

    我知道这个问题已经被问过好几次了 但是我发现的所有其他问题都与我想要的不同 我想将文件名和文件路径上传到名为 工厂图像 的表 这样做的最佳方法是什么 我的控制器功能 function do upload config upload path
  • 使用python(谷歌应用程序引擎)获取上传文件的名称和扩展名

    我正在使用表单将文件上传到谷歌应用程序引擎并将它们存储在数据存储中 我还想存储原始文件名和扩展名以供演示之用 有没有办法从发布服务器端检索此数据 或者只能在客户端收集并作为单独的字段发送 例如http www tinyurl com 5jy
  • 在 ASP Classic 中注释代码

    我所知道的散列代码的方式ASP经典版 http en wikipedia org wiki Active Server Pages is 这是正确的吗 或者还有别的办法吗 使用单引号 例如 This is comment ASP 经典使用V
  • 如何使用multiple属性在Android上上传多个文件?

    I got a
  • 在 Rails 中使用回形针进行 ajax 上传的简单方法?

    我想知道是否有一个简单的方法 例如一个插件 用回形针在 Rails 中进行 ajax 上传 还是我必须从头开始构建它 Cheers 编辑 另外 我正在寻找非闪存解决方案 你可以试试remotipart http os alfajango c
  • PHP上传图片

    好吧 我在这方面投入了很多时间 我是 PHP 编程新手 并试图掌握基础知识 但我有点迷失 因为昨晚我能够获得一个 PHP 表单来将基本数据 如名称地址和其他内容 上传到我的 MySQL 服务器 但今天我说让我们进行下一步 将图像发送到服务器
  • 如何在经典 ASP 中将 Windows-1255 转换为 UTF-8?

    如何将 windows 1255 字符串转换为 utf 8classic应用服务提供商 我的数据库是 windows 1255 我想将我的网站转移到 utf 8 代码是否在这个答案 https stackoverflow com quest
  • 如何在 PrimeNG 的 FileUpload 组件中中止文件上传?

    一 总结 基于PrimeNG中选择的文件文件上传组件 https www primefaces org primeng fileupload 我想中止特定文件名模式的文件上传到后端服务器 角度 6 0 7 PrimeNG 6 0 2 2 第
  • python 请求上传文件

    我正在访问一个网站 并且想要上传一个文件 我用Python编写了代码 import requests url http example com files file open 1 jpg rb r requests post url fil
  • PHP 一次只能看到 20 个上传文件

    当我尝试一次上传超过 20 个文件时 网络服务器只能看到前 20 个文件 任何其他文件都会被忽略 问题是什么 简单的代码可以尝试
  • asp classic 登录时获取用户IP

    我们有员工考勤制度 它是用 asp classic 编写的 带有 MS ACCESS 数据库 其中存储用户信息及其登录时间 我想添加一件额外的事情 我可以从用户登录的地方看到他们的工作站 IP 地址 我们相信 即使某人不在办公室 某人也会替

随机推荐