File upload 在经典ASP中上载文件,无需另一个完全自定义的类

File upload 在经典ASP中上载文件,无需另一个完全自定义的类,file-upload,asp-classic,runtime-error,File Upload,Asp Classic,Runtime Error,是的,我使用的是经典的ASP,不是出于选择,我支持的是传统的应用程序。目标:我需要有一个表单页面提交到另一个.asp页面,该页面将上载文件并将其存储在服务器上的特定目录中,如“/上载”。我对asp或asp.net不是很熟悉,所以我对这方面很陌生。我已经创建了一个测试原型: 表格页: <!DOCTYPE html> <head> <title>Test upload</title> </head> <body> <fo

是的,我使用的是经典的ASP,不是出于选择,我支持的是传统的应用程序。目标:我需要有一个表单页面提交到另一个.asp页面,该页面将上载文件并将其存储在服务器上的特定目录中,如“/上载”。我对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>
显然,我没有正确映射到文件,我认为我陷入困境的主要原因是,在
MoveFile
方法的第一个参数中,我没有正确映射到文件。谁能告诉我应该如何引用该文件,或者我是否做错了


提前感谢您的帮助,我将非常感谢您的帮助,我找到的所有与经典asp和上载文件相关的内容都是您可以购买的类,我不想这样做。

看看这样的解决方案,它应该会对您有所帮助。在经典ASP中,当数据以多部分/表单数据的形式发送时,您无法直接访问
Request.Form
,因此您可以选择使用第三方组件,如或使用ASP类,为您解析请求并公开保存文件的方法。

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

更改:

fs.MoveFile fileOrigPath, newPath
致:


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

您的代码不会上载任何内容。在经典的ASP中,它不能在一行中完成,必须使用复杂的代码,因为您必须读取原始二进制数据并自己解析。你也可以使用我几年前写的代码,可以发现你需要从ZIP文件中获取文件,并且有示例代码。我想知道是否可能是这样,所以本质上你说的是,我必须获取文件并读取它,然后将这些内容写入文件并保存在某个地方?我对此非常困惑,因为我是一名php开发人员,所以在asp中支持传统应用程序肯定是一个学习的过程。浏览器将文件内容和所有表单数据作为一个二进制数据流发送到服务器,而
enctype=“multipart/form data”
负责这一点。然后服务器需要将原始数据解析回文件内容和表单数据,PHP和ASP.NET足够聪明,不需要额外的代码就可以做到这一点,而经典ASP则不然。这是PHP中的问题,当你上传一些东西时,你的文件在移动之前会被放置在临时名称的地方。我需要找到一种方法来获取文件库,以便正确地移动它。然而,从评论、答案和其他文章来看,我试图以我这样做的方式做的事情听起来不太可能,我觉得我缺少了一个更大的画面,在经典的ASP中,文件被放置在ASP中,您可以在ASP中写入以放置它,除非您上传到内存中,而是从(我的)内存没有多少COM可以做到这一点。99%的时间上载到启用写入的目录(通常在wwwroot外部),然后将其从该目录移动到wwwroot内部,因为移动文件不需要写入权限,因为帐户IIS正在运行,或者经过身份验证的用户将有权移动文件。移动文件时只需放置完整路径。
Microsoft VBScript runtime error '800a0035'
File not found
/tbird/fileUpload/process.asp, line 25
fs.MoveFile fileOrigPath, newPath
fs.MoveFile fileOrigPath & fileName, newPath & fileName