2

是的,我使用的是 Classic ASP,而不是选择我支持 Legacy 应用程序。目标:我需要一个表单页面提交到另一个.asp页面,该页面将上传文件并将其存储在服务器上的某个目录中,例如“/uploads”。我对asp或asp.net并不熟悉,所以我对此很陌生。我创建了一个测试原型:

表格页面:

<!DOCTYPE html>
<head>
<title>Test upload</title>
</head>
<body>

<form action="process.asp" method="post" enctype="multipart/form-data">
     <p>Filename: <input type="text" name="filename" size="50" /></p>
     <p><input type="file" name="file" /><input type="submit" value="Upload file" /></p>
</form>

</body>
</html>

处理页面:

<%

Set fs = Server.CreateObject("Scripting.FileSystemObject")

Set tfolder = fs.GetSpecialFolder(2)
tname = fs.GetTempName

'Declare variables
Dim fileSize
Dim filename
Dim file
Dim fileType
Dim p
Dim newPath

'Assign variables
fileSize       = Request.TotalBytes
fileName       = Request.form("filename")
file           = request.form("file")
fileType       = fs.GetExtensionName(file)
fileOldPath    = tfolder
newPath        = Server.MapPath("/uploads/")

fs.MoveFile fileOrigPath, newPath


set fs = nothing

%>

问题是每次我尝试上传或运行脚本时都会收到此错误:

Microsoft VBScript runtime error '800a0035'
File not found
/tbird/fileUpload/process.asp, line 25

显然我没有正确映射到文件,我认为我卡住的主要原因是在MoveFile方法的第一个参数中我没有正确映射到文件。谁能告诉我应该如何引用该文件,或者我是否做错了?

提前感谢我非常感谢我搜索过的所有帮助,我发现与经典 asp 和上传文件相关的所有内容都是您可以购买的课程,我不想这样做。

4

2 回答 2

8

看看Pure ASP Upload之类的解决方案,它应该对您有所帮助。在经典 ASP 中,当数据在multipart/form-dataRequest.Form中发送时,您无法直接访问,因此您可以选择使用第三方组件(如ASPUpload)或 ASP 类来为您解析请求并将方法公开给保存文件。

于 2013-02-20T20:49:05.417 回答
-1

移动文件时,您还必须指定文件名。

改变:

fs.MoveFile fileOrigPath, newPath

到:

fs.MoveFile fileOrigPath & fileName, newPath & fileName

假设“fileName”是文件名的正确变量,而不是上面的“file”变量。

于 2013-02-21T06:48:23.843 回答