How to upload images to a folder using Classic ASP?

Is there any script for Classic ASP so I can upload an image to a folder.

Ex: I click on a button, load the image, click to upload and go to a folder for example: C:\ASP\sistema\imagens.

 4
Author: Maniero, 2014-02-10

2 answers

In the ASP classic, you don't have access to the method - Request.Form directly from you when you are getting in a POST-type multipart/form-data, and then how to interpret the data, it is necessary to parse the information is sent, it is a project that can help your ; Pure-ASP-Upload which will help you with this task, or you can install the components on the server, as the - ASP-Upload it will help you to add a class that allows you to easily play in this kind of form, and save your content in the server.

This code is written in VB5, so if your server is not up to date with VB, you will need to update it to work.

Pure ASP upload source code:

<%
'***************************************
' File:   Upload.asp
' Author: Jacob "Beezle" Gilley
' Email:  [email protected]
' Date:   12/07/2000
' Comments: The code for the Upload, CByteString, 
'           CWideString subroutines was originally 
'           written by Philippe Collignon...or so 
'           he claims. Also, I am not responsible
'           for any ill effects this script may
'           cause and provide this script "AS IS".
'           Enjoy!
'****************************************

Class FileUploader
    Public  Files
    Private mcolFormElem

    Private Sub Class_Initialize()
        Set Files = Server.CreateObject("Scripting.Dictionary")
        Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
    End Sub

    Private Sub Class_Terminate()
        If IsObject(Files) Then
            Files.RemoveAll()
            Set Files = Nothing
        End If
        If IsObject(mcolFormElem) Then
            mcolFormElem.RemoveAll()
            Set mcolFormElem = Nothing
        End If
    End Sub

    Public Property Get Form(sIndex)
        Form = ""
        If mcolFormElem.Exists(LCase(sIndex)) Then Form = mcolFormElem.Item(LCase(sIndex))
    End Property

    Public Default Sub Upload()
        Dim biData, sInputName
        Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
        Dim nPosFile, nPosBound

        biData = Request.BinaryRead(Request.TotalBytes)
        nPosBegin = 1
        nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))

        If (nPosEnd-nPosBegin) <= 0 Then Exit Sub

        vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
        nDataBoundPos = InstrB(1, biData, vDataBounds)

        Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--"))

            nPos = InstrB(nDataBoundPos, biData, CByteString("Content-Disposition"))
            nPos = InstrB(nPos, biData, CByteString("name="))
            nPosBegin = nPos + 6
            nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
            sInputName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
            nPosFile = InstrB(nDataBoundPos, biData, CByteString("filename="))
            nPosBound = InstrB(nPosEnd, biData, vDataBounds)

            If nPosFile <> 0 And  nPosFile < nPosBound Then
                Dim oUploadFile, sFileName
                Set oUploadFile = New UploadedFile

                nPosBegin = nPosFile + 10
                nPosEnd =  InstrB(nPosBegin, biData, CByteString(Chr(34)))
                sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
                oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))

                nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:"))
                nPosBegin = nPos + 14
                nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))

                oUploadFile.ContentType = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))

                nPosBegin = nPosEnd+4
                nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
                oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin)

                If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile
            Else
                nPos = InstrB(nPos, biData, CByteString(Chr(13)))
                nPosBegin = nPos + 4
                nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
                If Not mcolFormElem.Exists(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
            End If

            nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds)
        Loop
    End Sub

    'String to byte string conversion
    Private Function CByteString(sString)
        Dim nIndex
        For nIndex = 1 to Len(sString)
           CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1)))
        Next
    End Function

    'Byte string to string conversion
    Private Function CWideString(bsString)
        Dim nIndex
        CWideString =""
        For nIndex = 1 to LenB(bsString)
           CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1))) 
        Next
    End Function
End Class

Class UploadedFile
    Public ContentType
    Public FileName
    Public FileData

    Public Property Get FileSize()
        FileSize = LenB(FileData)
    End Property

    Public Sub SaveToDisk(sPath)
        Dim oFS, oFile
        Dim nIndex

        If sPath = "" Or FileName = "" Then Exit Sub
        If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\"

        Set oFS = Server.CreateObject("Scripting.FileSystemObject")
        If Not oFS.FolderExists(sPath) Then Exit Sub

        Set oFile = oFS.CreateTextFile(sPath & FileName, True)

        For nIndex = 1 to LenB(FileData)
            oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
        Next

        oFile.Close
    End Sub

    Public Sub SaveToDatabase(ByRef oField)
        If LenB(FileData) = 0 Then Exit Sub

        If IsObject(oField) Then
            oField.AppendChunk FileData
        End If
    End Sub

End Class
%>

Usage example:

<%@ Language=VBScript %>
<%Option Explicit%>
<!-- #include file="upload.asp" -->
<%

'NOTE - YOU MUST HAVE VBSCRIPT v5.0 INSTALLED ON YOUR WEB SERVER
'      FOR THIS LIBRARY TO FUNCTION CORRECTLY. YOU CAN OBTAIN IT
'      FREE FROM MICROSOFT WHEN YOU INSTALL INTERNET EXPLORER 5.0
'      OR LATER.


' Create the FileUploader
Dim Uploader, File
Set Uploader = New FileUploader

' This starts the upload process
Uploader.Upload()

'******************************************
' Use [FileUploader object].Form to access 
' additional form variables submitted with
' the file upload(s). (used below)
'******************************************
Response.Write "<b>Thank you for your upload " & Uploader.Form("fullname") & "</b><br>"

' Check if any files were uploaded
If Uploader.Files.Count = 0 Then
    Response.Write "File(s) not uploaded."
Else
    ' Loop through the uploaded files
    For Each File In Uploader.Files.Items

        ' Check where the user wants to save the file
        If Uploader.Form("saveto") = "disk" Then

            ' Save the file
            File.SaveToDisk "E:\UploadedFiles\"

        ElseIf Uploader.Form("saveto") = "database" Then

            ' Open the table you are saving the file to
            Set RS = Server.CreateObject("ADODB.Recordset")
            RS.Open "MyUploadTable", "CONNECT STRING OR ADO.Connection", 2, 2
            RS.AddNew ' create a new record

            RS("filename")    = File.FileName
            RS("filesize")    = File.FileSize
            RS("contenttype") = File.ContentType

            ' Save the file to the database
            File.SaveToDatabase RS("filedata")

            ' Commit the changes and close
            RS.Update
            RS.Close
        End If

        ' Output the file details to the browser
        Response.Write "File Uploaded: " & File.FileName & "<br>"
        Response.Write "Size: " & File.FileSize & " bytes<br>"
        Response.Write "Type: " & File.ContentType & "<br><br>"
    Next
End If

%>

Example HTML:

<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="uploadexmple.asp">
    <TABLE BORDER=0>
    <tr><td><b>Enter your fullname:</b><br><INPUT TYPE=TEXT SIZE=40 NAME="FULLNAME"></td></tr>
    <tr><td><b>Select a file to upload:</b><br><INPUT TYPE=FILE SIZE=50 NAME="FILE1"></td></tr>
    <tr><td><b>Save To:</b>&nbsp;&nbsp;
        Disk&nbsp;<INPUT TYPE=RADIO NAME="saveto" value="disk" checked>&nbsp;&nbsp;
        Database&nbsp;<INPUT TYPE=RADIO NAME="saveto" value="database">
    </td></tr>
    <tr><td align="center"><INPUT TYPE=SUBMIT VALUE="Upload!"></td></tr>
    </TABLE>
</FORM>
 2
Author: Gabriel Gartz, 2014-02-10 15:09:41

You can use the Class clsUpload.

After you give an include in it, you can simply do like this:

ASP:

Dim objUpload 
Dim strArquivo, strCaminho

Set objUpload = New clsUpload
strArquivo= objUpload.Fields("file").FileName
strCaminho= "C:/ASP/sistema/imagens/" & strFile

objUpload("file").SaveAs strCaminho
Set objUpload = Nothing

HTML:

<form enctype="multipart/form-data" method="post" action="clsUpload.asp">
  <div>Enviar arquivo: </div>
  <div>
    <input type="file" NAME="file"> 
    <input type="button" name="enviar" value="Enviar">
  </div>
</form>

See here .

 1
Author: Maicon Carraro, 2014-02-10 15:07:38