Para fazer upload de arquivos usando Asp 3.0 (Asp Clássico), use o código Asp Pure Upload:
FORMULÁRIO HTML:
Pure Classic ASP Upload
<h2>Upload File (Pure Classic ASP)</h2>
<!-- Crucial: enctype must be multipart/form-data -->
<form action="upload_re.asp" method="post" enctype="multipart/form-data">
<label for="file">Choose File:</label>
<input type="file" name="txtFile" id="file"><br><br>
<input type="submit" value="Upload Now">
</form>
CÓDIGO ASP NO SERVIDOR
<%@ Language=VBScript %>
<%
Option Explicit
Response.CharSet = “UTF-8”
‘ Configuration
Dim UploadDirectory
UploadDirectory = Server.MapPath(“upload/”) ‘ Make sure this folder exists and has WRITE permissions!
‘ Process the form submission
If Request.ServerVariables(“REQUEST_METHOD”) = “POST” Then
Call HandlePureASPUpload()
End If
%>
<%
Sub HandlePureASPUpload()
Dim TotalBytes, BinaryData
TotalBytes = Request.TotalBytes
If TotalBytes = 0 Then
Response.Write “
Error: No data sent.”
Exit Sub
End If
‘ Read raw HTTP data stream into a binary variable
BinaryData = Request.BinaryRead(TotalBytes)
‘ Establish boundaries from the stream
Dim Boundary, BoundaryPos
BoundaryPos = InStrB(1, BinaryData, ChrB(13) & ChrB(10))
If BoundaryPos = 0 Then Exit Sub
Boundary = MidB(BinaryData, 1, BoundaryPos – 1)
‘ Find Content-Disposition block for the file stream
Dim PosFileStart, PosFileEnd, FileData, FileName
Dim PosNameStart, PosNameEnd
‘ Parse out the original filename
PosNameStart = InStrB(1, BinaryData, BytesToBstr(“filename=”””))
If PosNameStart > 0 Then
PosNameStart = PosNameStart + 10
PosNameEnd = InStrB(PosNameStart, BinaryData, BytesToBstr(“”””))
FileName = BstrToAnsi(MidB(BinaryData, PosNameStart, PosNameEnd – PosNameStart))
' Strip out potential directory paths passed by older IE browsers
If InStr(FileName, "\") > 0 Then
FileName = Mid(FileName, InStrRev(FileName, "\") + 1)
End If
End If
‘ Locate where the real binary file stream content begins and ends
PosFileStart = InStrB(PosNameEnd, BinaryData, ChrB(13) & ChrB(10) & ChrB(13) & ChrB(10))
If PosFileStart > 0 Then
PosFileStart = PosFileStart + 4
PosFileEnd = InStrB(PosFileStart, BinaryData, Boundary) – 4
' Slice out the clean file contents
FileData = MidB(BinaryData, PosFileStart, PosFileEnd - PosFileStart)
' Ensure a filename exists and the data payload isn't empty
If Len(FileName) > 0 And LenB(FileData) > 0 Then
Dim TargetPath
TargetPath = UploadDirectory & "\" & FileName
' Save the binary array cleanly to the server disk
If SaveBinaryFile(TargetPath, FileData) Then
Response.Write "<p style='color:green;'>Success! File uploaded as: " & Server.HTMLEncode(FileName) & "</p>"
Else
Response.Write "<p style='color:red;'>Error saving file. Check folder permissions.</p>"
End If
Else
Response.Write "<p style='color:red;'>Error: Empty file field or no file selected.</p>"
End If
End If
End Sub
‘ Function to write raw bytes using ADODB Streams (safe from string-truncation errors)
Function SaveBinaryFile(FilePath, BinaryContents)
On Error Resume Next
Dim BinaryStream
Set BinaryStream = Server.CreateObject(“ADODB.Stream”)
BinaryStream.Type = 1 ‘ adTypeBinary
BinaryStream.Open
BinaryStream.Write BinaryContents
BinaryStream.SaveToFile FilePath, 2 ‘ adSaveCreateOverWrite
BinaryStream.Close
Set BinaryStream = Nothing
If Err.Number <> 0 Then
SaveBinaryFile = False
Else
SaveBinaryFile = True
End If
On Error GoTo 0
End Function
‘ Helper: Convert regular VBScript strings to Binary Stream Lookups
Function BytesToBstr(Str)
Dim i, out
out = “”
For i = 1 To Len(Str)
out = out & ChrB(Asc(Mid(Str, i, 1)))
Next
BytesToBstr = out
End Function
‘ Helper: Convert Binary Bytes from stream back to readable ANSI strings
Function BstrToAnsi(Bstr)
Dim i, out
out = “”
For i = 1 To LenB(Bstr)
out = out & Chr(AscB(MidB(Bstr, i, 1)))
Next
BstrToAnsi = out
End Function
%>
Upload de Arquivos – Asp Pure Upload