2016-12-16 1 views
0

Hey Leute, die hier ein Problem mit einem Asp-Skript haben. Im Folgenden ist der Code, den ich für die Benutzer für eine Upload-Funktion verwende ein Bild hochladenUpload-Funktion FilePath Fehler

<% 
' Create the FileUploader 
Dim Uploader, File, FileSys, FilePath 
Set Uploader = New FileUploader 

' This starts the upload process 
Uploader.Upload() 

' 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 

     ' Set upload Path and Filename to check if that file already exists 
     FilePath = "C:\inetpub\wwwroot\coursework2\database\uploads\"&File.FileName 
     Set FileSys = CreateObject("Scripting.FileSystemObject") 

     ' If intended uploaded file already exists in the specified directory do alert and redirect previous page 
     If FileSys.FileExists(FilePath) then 
      Response.Write("<script>alert('Sorry FileName:"& File.FileName &" Already Used!! Please Rename Your Local File')</script>") 
      Response.Write("<script>window.location.href='index.asp'</script>") 
     else 
      ' Else Save the file 
      File.SaveToDisk "C:\inetpub\wwwroot\coursework2\database\uploads" 
     end if 
    Next 
    ' Confirm file saved and redirect to previous page if more files to be uploaded 
    Response.Write("<script>alert('File Saved')</script>") 
    Response.Write("<script>window.location.href='index.asp'</script>") 
End If 

%> 

Dies ist Verbindungszeichenfolge an den Server ich die Datei hochzuladen versuche

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="& Server.MapPath("/dek0272/coursework2/database/uploads") 

Hier ich möchte den Dateipfad und die file.save auf die Festplatte Lage setzen, wie

http://focserver.londonmet.ac.uk/dek0272/coursework2/database/uploads/ 

Wenn ich die filepath und file.save zu Plattenort an diese Adresse zu ändern. Die Funktion lädt nichts hoch. Ich glaube, dass ich den Pfad falsch schreibe. Ich habe viele Möglichkeiten ausprobiert, um es zu schreiben und immer noch kein Glück.

Irgendwelche Vorschläge

Dank

Dies ist die upLoadFunctions.asp

Datei wird
<% 

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 
+0

Erstens ist dieses klassische ASP, es hat nichts mit ASP.net zu tun. Zweitens ist eine Verbindungszeichenfolge etwas, das Sie verwenden, um eine Verbindung zu einer Datenbank herzustellen (in diesem Fall eine ACCDB-Access-Datei), kein Webserver. Bezieht sich der Dateiuploader auf eine Klassendatei, die Sie zuvor in Ihrem Skript hinzugefügt haben? – John

+0

guten Tag @John. Ich habe den Beitrag bearbeitet, um die Datei-Ladeprogramm-Funktion einzuschließen. Vielen Dank für Ihre Antwort. –

+0

Wenn Sie Dateien in Classic ASP hochladen, haben Sie zwei Möglichkeiten. Eine ist die Installation einer Drittanbieter-Komponente wie Persits ASP-Upload. Die andere besteht darin, ein ADODB.Stream-Objekt zu verwenden. Es gibt viele fertige Skripte, die ich immer benutze, heißt Freeaspupload. Leider ist die Seite, auf der sie gefunden wurde, seit einiger Zeit nicht mehr verfügbar, aber Sie können sie mit dem Internetarchiv hier finden - https://web.archive.org/web/20131216133943/http://www.freeaspupload.net/. Werfen Sie auch einen Blick auf diese Frage - http://stackoverflow.com/questions/12190305/how-to-upload-files-with-asp-classic – John

Antwort

0

Sie eine ASP-Fehler-Nachricht erhalten Sie? Wenn ja, welcher Fehlercode? Wenn nicht, versuchen Sie einen ungültigen Dateipfad, um einen Fehler zu provozieren (um zu sehen, ob der Dateipfad das Problem ist oder nicht).

Afaik dieser Linien

Set FileSys = CreateObject("Scripting.FileSystemObject") 

sollte

Set FileSys = Server.CreateObject("Scripting.FileSystemObject") 

Eine weitere mögliche Fehlerquelle: Haben Sie überprüfen, ob der Dateipfad Ordner richtige Schreibrechte hat? Für wie Schreibrechte auf IIS 7.5 (= Win Server 2008R2) siehe einzustellen:

How do I give ASP.NET permission to write to a folder in Windows 7?

+0

Hey vielen Dank für Ihre Zeit zu beantworten . Der Ordner hat korrekte Berechtigungen. Es gab keinen Fehlercode. Die Funktion hat angegeben, dass sie erfolgreich war, aber die Datei war nicht zum Anzeigen vorhanden. Ich werde versuchen, was du gesagt hast. Du schreibst den Dateipfad, in welches Format würdest du ihn schreiben? –

Verwandte Themen