Jump to content

File Uploader Issues

Recommended Posts

I am trying to make an admin panel for my game that will let you upload files directly to the game so that they can be used in the code: However I keep getting a 500 internal server error, and it won't tell me what the error is (I had this problem with godaddy before they don't give the error code, I spent months following forum posts from people there and couldn't get it working) So I don't know what is wrong here is my code: imageuploader.asp (A snippet from the form page)

<%If Admin="Yes" thenresponse.write "<html><head><title>Image Uploader</title></head>"response.write "<body>"response.write "<form method=""POST"" enctype=""multipart/form-data"" action=""uploadfile.asp"">"response.write "<h1>DragonCraft: Image Uploader</h2><table border=0>"response.write "<tr><td><b>Select a file to upload:</b><br><INPUT TYPE=""FILE"" SIZE=""50"" NAME=""FILE1""> <INPUT TYPE=SUBMIT VALUE=""Upload!""></td></tr>"response.write "<tr><td><b>Image Type:</b><br />"response.write "Portrait :<INPUT TYPE=""RADIO"" NAME=""ImageType"" value=""Portrait"" checked><br />"response.write "Icon :<INPUT TYPE=""RADIO"" NAME=""ImageType"" value=""Icon"">"response.write "</td></tr>"response.write "</TABLE></FORM></BODY></HTML>"Elseresponse.write "Access Denied"End If%>

Uploadfile.asp (processes request)

<!-- #include file="../Includes/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 FileUploaderDim Uploader, FileSet Uploader = New FileUploader' This starts the upload processUploader.Upload()'******************************************' Use [FileUploader object].Form to access' additional form variables submitted with' the file upload(s). (used below)'******************************************' Check if any files were uploadedIf 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("ImageType") = "Icon" Then			    Directory = "D:\Hosting\5230803\html\DragonCraft\Images\Icons\"			    ElseIf Uploader.Form("ImageType") = "Portrait"			    Directory = "D:\Hosting\5230803\html\DragonCraft\Images\Portraits\"			    End If            ' Save the file        File.SaveToDisk(Directory)                ' 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>"    NextEnd If%>

Upload.asp (Class file)

<%'***************************************' File:      Upload.asp' Author: Jacob "Beezle" Gilley' Email:  avis7@airmail.net' 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 FunctionEnd ClassClass 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 SubEnd Class%>

The class file was made by somebody at asp101.comWhat's wrong with my code? TIA :)

  • Like 1
Link to post
Share on other sites
  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...