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