在 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 脚本中组合文件和数据库上传时出错 的相关文章

  • ASP Readline 非标准行结尾

    我正在使用 ASP 经典版ReadLine 文件系统对象的功能 一切都进展顺利 直到有人在 Mac 上使用 TextEdit 制作了导入文件 行结尾不相同 并且ReadLine 读入整个文件 而不是一次只读一行 有处理这个问题的标准方法吗
  • 上传时自动缩小 CSS 和 Javascript

    有谁知道通过上传处理 脚本自动运行某些文件类型的好方法 当我将 CSS 和 Javascript 上传到服务器时 我试图自动缩小它们 在本地保留一个漂亮的 人类可读的版本 同时在服务器上保留一个缩小的版本 我目前在 Windows 上使用
  • 上传进度条 Java Servlet?

    我想使用 servlet 显示上传进度条 我尝试过Ajax iFrame 技术 页面没有重新加载 文件也被上传 但是 进度条没有出现 有没有可用于 javaservlts 的 jQuery 进度插件 Thanks 我强烈推荐jQuery 上
  • VBScript:从 Scripting.Dictionary 中对项目进行排序

    我有下面的代码 它获取这样的数据 姓名 1 姓名 4 姓名 2 姓名 3 并像这样列出 是一个复选框 姓名 1 姓名 4 姓名 2 姓名 3
  • 在 Android 中上传文件出现内存不足错误

    我的上传代码如下 String end r n String twoHyphens String boundary try URL url new URL ActionUrl HttpURLConnection con HttpURLCon
  • SQL服务器超时

    我的应用程序是在经典 asp 上开发的 但也使用 asp net 因为我正在将应用程序迁移到 Net 上 它使用 SQL Server 作为数据库并托管在 Windows Server 2003 上 现在的问题是应用程序在很长一段时间内继续
  • XMPP 多用户聊天设置群聊头像

    我正在开发一个带有聊天功能的 iOS 应用程序 我正在为该应用程序使用 XMPP 在XMPP多用户聊天中 是否有功能可以像我们在whatsapp中那样为会议室设置头像或群组图像 我检查过XEP 0045 http xmpp org exte
  • 如何添加从 Outlook 到 Web 表单的拖放上传功能?

    我正在寻找一种方法 允许用户以简单的方式将 Outlook 电子邮件上传到基于 Web 的系统 我可以让它以手动方式为用户工作 他们可以将电子邮件从 Outlook 拖放到桌面上 这会创建一个 msg 文件 这非常有效 尤其是 电子邮件中是
  • HTML/CSS - 使用图像作为输入类型=文件

    如何使用此图像 http h899310 devhost se proxy newProxy uplfile png http h899310 devhost se proxy newProxy uplfile png 而不是常规的
  • 检查文件是否要上传?代码点火器

    我有一个带有很少输入和一个文件输入的表单 我想检查文件输入是否为空 如果为空则不要尝试上传 如果不是则尝试上传 我尝试过这样的事情 upld file this gt upload gt data if empty upld file Up
  • GetClientCertificate 使用什么主题?

    我正在尝试发送请求 ActiveXObject WinHttp WinHttpRequest 5 1 但是 这需要客户端证书才能执行此操作 我们已提供该证书 在 PHP cURL 中进行测试后 我可以这样做 curl setopt SOAP
  • ELMAH 错误和经典 Asp

    我们已经在我们拥有的 ASP NET MVC 网站上使用 ELMAH 进行错误日志记录 但我们的主网站仍然是经典的 asp 我已经开始为该网站创建错误处理 日志记录结构 但我认为它如果我们能够在所有应用程序中保持错误日志记录的一致性 那就太
  • 如何在 Android 中的服务器上发布大视频?

    我正在尝试发布一个大视频 近 1 GB 我正在使用 FTP 将视频发送到服务器 但上传在一段时间后停止 在服务器上 视频崩溃 但我可以上传较小尺寸的视频 我还使用 HTTP 将视频发送到服务器 作为 Base64 编码字符串发送 但是有一个
  • php同时上传最大文件数

    我正在使用标签 用于使用 php 上传多个文件 我注意到 如果我选择超过 20 个文件 php 只会上传前 20 个文件 有没有办法扩大这个限制 这个限制被添加到PHP 5 2 12 https www php net releases 5
  • 如何使用 MSXML2.ServerXMLHTTP 从另一个站点获取数据?

    我们有以下链接 http mvp sos state ga us http mvp sos state ga us 我们不想创建数据库来复制 MVP 页面的信息 而是希望使用自己的表单 然后在幕后将信息发送到上面的站点 以使用名为 MSXM
  • 将 ADODB.RecordSet 输出为 JSON

    我正在尝试更改我的应用程序 以便它输出 JSON 而不是 HTML当它发出 AJAX 请求某些数据时 我有一个 ADODB 记录集 我需要逐行循环它并添加 更改 删除不同的值 然后我需要获取所有修改的行response write它们作为
  • 如何使用 Java 将文档上传到 SharePoint?

    我正在使用 Java 创建一些大文件 数据库导出 我需要将它们放在 SharePoint 服务器上的某个位置 现在 我正在使用 IE 执行此操作 但我也想自动化此步骤 我搜索了网络 发现了一些使用 SOAP 的提示 但我还没有真正了解这一切
  • 使用PHP将大文件上传到谷歌云存储

    我正在尝试将大文件从服务器上传到云存储 文件超过 500mb 但 PHP 超时 我尝试查看 Google 客户端库文档 并在 stackoverflow 中进行爬行 但找不到任何可以帮助我的内容 还有有什么办法可以跟踪上传进度吗 这是我目前
  • 错误 itms-90451“CFBundleIdentifier 冲突错误”

    我上传了我的应用程序的一个版本 弹出此错误 并且我的应用程序的 Google 地图部分没有任何更改 我第一次上传时没有任何问题 只需从您的扩展中删除嵌入框架构建阶段即可 单击目标部分中的扩展 gt 构建阶段 gt 删除嵌入 Pod 框架 见
  • HTTP部分上传、断点续传的标准方法

    我正在开发 http 客户端 服务器框架 并寻找处理部分上传的正确方法 与使用带有 Range 标头的 GET 方法进行下载相同 但是 HTTP PUT 并不打算恢复 据我所知 PATCH 方法不接受 Range 标头 有没有办法通过 HT

随机推荐