Hej, Jag använder mig av koden som Pelle J har gjort och lagt upp som en artikel hur man låter användaren skicka upp filler utan komponenter. Här är i alla fall koden på Upload.asp Jag känner igen detta problem. Det gjorde susen med att stänga av funktionen "Enable Script Blocking" i Norton. Problem vid uppladdning av bilder
Jag försöker ladda upp bilder till min egna webbservern, problemet är att ingenting händer, den står bara och tuggar.
Är det någon inställningsgrej i min IIS som måste ändras eller måste någon rättighet ändras och hur gör jag det i så fall?
mvh
TomasSv: Problem vid uppladdning av bilder
<%
' Justera tiden beroende på hur stora filer du kommer tillåta att skicka
Server.ScriptTimeout = 5400
Const ForWriting = 2
Const TristateTrue = -1
CrLf = Chr(13) & Chr(10)
'Denna funktion hämtar ett fälts namn
Function GetFieldName(infoStr)
sPos = InStr(infoStr, "name=")
EndPos = InStr(sPos + 6, infoStr, Chr(34) & ";")
If EndPos = 0 Then
EndPos = inStr(sPos + 6, infoStr, Chr(34))
End If
GetFieldName = Mid(infoStr, sPos + 6, endPos - (sPos + 6))
End Function
'Denna funktion hämtar fältets värde i filnamn
Function GetFileName(infoStr)
sPos = InStr(infoStr, "filename=")
EndPos = InStr(infoStr, Chr(34) & CrLf)
GetFileName = Mid(infoStr, sPos + 10, EndPos - (sPos + 10))
End Function
' Denna funktion hämtar ett filens MIMEtyp
Function GetFileType(infoStr)
sPos = InStr(infoStr, "Content-Type: ")
GetFileType = Mid(infoStr, sPos + 14)
End Function
PostData = ""
' Hämtar hela headern som postats genom att hämta headerns storlek med dess data
Dim biData
biData = Request.BinaryRead(Request.TotalBytes)
' Tänk nu på att det är binär data så vi måste ändra detta till
' någonting som är hanterbart och läsbart.
For nIndex = 1 to LenB(biData)
PostData = PostData & Chr(AscB(MidB(biData,nIndex,1)))
Next
' När du använt BinaryRead så kan du inte använda Request-objektet. Därför måste vi
' hantera alla request-variablerna själva genom att hämta ut detta
ContentType = Request.ServerVariables( "HTTP_CONTENT_TYPE")
' delar upp datat
ctArray = Split(ContentType, ";")
' En fil som postas fungerar endast om du i formen satt "multipart/form-data"
' - så vi kontrollerar att det är gjort
If Trim(ctArray(0)) = "multipart/form-data" Then
ErrMsg = ""
' Hämta all data om formen
bArray = Split(Trim(ctArray(1)), "=")
Boundary = Trim(bArray(1))
' Splitta upp all denna indata
FormData = Split(PostData, Boundary)
' Dela upp informationen för varje variabel och data
Dim myRequest, myRequestFiles(9, 3)
Set myRequest = CreateObject("Scripting.Dictionary")
FileCount = 0
' För varje fält som finns i den postade formen
For x = 0 to UBound(FormData)
' Två CrLf markerar slutet på informationen om ett fält. Allt efter
' det är ett värde
InfoEnd = InStr(FormData(x), CrLf & CrLf)
If InfoEnd > 0 Then
' Hämtar informationen för aktuellt fält utom skräptecken i slutet på strängen
varInfo = Mid(FormData(x), 3, InfoEnd - 3)
' Hämtar värdet på fältet, vi tar bort CrLf både i början och i slitet
varValue = Mid(FormData(x), InfoEnd + 4,Len(FormData(x)) - InfoEnd - 7)
' Är detta filen eller fältet
If (InStr(varInfo, "filename=") > 0) Then
' placera vår fil i en stor array.
' Om du vill ladda upp flera filer på en gång så visas här hur du
' kan göra, men formen du postade från tillåter bara en så då får
' du göra om den så fler filen kan postas.
myRequestFiles(FileCount, 0) = GetFieldName(varInfo)
myRequestFiles(FileCount, 1) = varValue
myRequestFiles(FileCount, 2) = GetFileName(varInfo)
myRequestFiles(FileCount, 3) = GetFileType(varInfo)
FileCount = FileCount + 1
Else
' Detta är ett vanligt fält
myRequest.add GetFieldName(varInfo), varValue
End If
End If
Next
Else
ErrMsg = "Du har fel encoding typ!"
End If
' Om du tillåter mer filer än 1, gör om detta till en loop
' instansierar File ScriptingSystem (FSO)
Set lf = server.createObject("Scripting.FileSystemObject")
' vad valde användaren att använda för filnamn?
If myRequest("filename") = "original" Then
' Vad är det för klient som skickar filen, Machintosh skickar endast filnamnet
' medan Windows även skickar med sökvägen till filen.
BrowserType = UCase(Request.ServerVariables("HTTP_USER_AGENT"))
If (InStr(BrowserType, "WIN") > 0) Then
' Det är Windows med sökväg i
sPos = InStrRev(myRequestFiles(0, 2), "\")
fName = Mid(myRequestFiles(0, 2), sPos + 1)
End If
If (InStr(BrowserType, "MAC") > 0) Then
' Det är mac, endast filnamnet skickas
fName = myRequestFiles(0, 2)
End If
' här skapar du filnamnet som vi skall använda
FilePath = "./" & fName
Else
' använd det filnamn som användaren skrev istället
' Om användaren valt att spara med ett eget filnamn,
' då tar vi det istället.
FilePath = "./" & myRequest("userSpecifiedName")
End If
' anger sökvägen dit filen skall sparas
SavePath = Server.MapPath("/images")
' skapar objektet för att kunna spara en fil, finns den så skriver vi över den
Set SaveFile = lf.CreateTextFile(SavePath, True)
' Skriver filen (arrayen) till disk
SaveFile.Write(myRequestFiles(0, 1))
' stänger och frigör objektet
SaveFile.Close
%> Sv: Problem vid uppladdning av bilder
När jag skulle ladda upp bilder så hände samma sak för mig som för dig. Det jag gjorde var att jag i mitt virus program(Norton AntiVirus) stängde av funktionen "Enable Script Blocking". Sen fungerade det utmärkt. Kolla detta ifall du har ett virusprogram.Sv: Problem vid uppladdning av bilder
Har testat det på ett antal olika script och det funkar på alla utom Pelle J script (se ovan) där jag får upp felmeddelandet "Åtkomst Nekad", väldigt konstigt
mvh
Tomas