Tom Bird
Tom Bird

Reputation: 1039

Upload a file in Classic ASP without another class completely custom

Yes I am using Classic ASP, not by choice I am supporting a Legacy application. Objective: I need to have a form page that submits to another .asp page that will upload the file and store it on the server in a certain directory such as "/uploads". I'm not real familiar with asp or asp.net so I am very new to this. I've created a test prototype:

Form page:

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

Processing page:

<%

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

%>

The problem is that everytime I try to upload or run the script I get this error:

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

Obviously I'm not mapping correctly to the file and I think the major reason I am getting stuck is that in the first parameter of the MoveFile method I am not mapping to the file correctly. Can anyone tell me how I should be referencing the file or if I am doing it wrong?

Thanks in advance I would really appreciate the help I've searched all over and everything I find related to classic asp and uploading files are classes that you can purchase and I don't want to do that.

Upvotes: 2

Views: 47748

Answers (2)

silver
silver

Reputation: 630

When moving files you must also specify the file names.

Change:

fs.MoveFile fileOrigPath, newPath

To:

fs.MoveFile fileOrigPath & fileName, newPath & fileName

Assuming "fileName" is the correct variable for the file name and not "file" variable above.

Upvotes: -1

MaxiWheat
MaxiWheat

Reputation: 6261

Have a look at a solution like Pure ASP Upload, it should help you. In classic ASP, you cannot directly access Request.Form when data is sent in multipart/form-data, so you have the choice of using a third party component like ASPUpload or a ASP class that does the work of parsing the request for you and exposing methods to save the file.

Upvotes: 8

Related Questions