När jag kör fso.createfolder får jag upp följande felmeddelande:
Microsoft VBScript runtime error '800a0046'
Permission denied
/admin/uploadpic.asp, line 37
Varför får jag det? Använder mig av webhotellet Fs-Data...
9 svar · 526 visningar · startad av henkepenka
När jag kör fso.createfolder får jag upp följande felmeddelande:
Microsoft VBScript runtime error '800a0046'
Permission denied
/admin/uploadpic.asp, line 37
Varför får jag det? Använder mig av webhotellet Fs-Data...
'Permission denied' på svenska betyder 'Åtkomst nekad'.
Den användare som är specifierad som den anonyma och som ansluter från mot IIS:en har inte rättigheter i mappen för att skapa filer/mappar. Säg till ditt webbhotell att du vill ha skrivrättigheter i de mappar som du vill skapa filer i.
Men grejen är att det är lugnt att skicka upp filer i de mappar som redan finns, men det kanske inte är samma sak som att skapa mappar?
henkepenka skrev:
Men grejen är att det är lugnt att skicka upp filer i de mappar som redan finns, men det kanske inte är samma sak som att skapa mappar?
Jag antar att du menar att du kan lägga upp filer via FTP idag.
Ditt FTP-konto är sannolikt inte samma som det konto som används för att exekvera sidor på servern under IIS:en, vilket gör att deras olika rättigheter inte rör varandra.
Den användare jag pratar om är en användare som du aldrig märker av, som är ansvarig (och restrikerad) för att få göra vissa saker som anonym användare (som slav till dina besökare, kan man säga), t.ex. exekvera ASP-sidor, lista filer i mappar eller som i ditt fall; skriva data.
Du måste prata med ditt webbhotell om detta, såvida du inte har tillgång till någon slags kontrollpanel där du kan ändra dessa inställningar själv.
Nej, alltså jag skickar upp filer från en asp-sida via ett uploadscript utan problem. Det är när jag ska skapa mappar som felet uppkommer...
Är det i samma mapp, då?
Såhär ser koden ut:
If Request.QueryString("do") = "upload" Then
mapp = Request.QueryString("katalog")
Response.Expires=0
Response.Buffer = TRUE
Response.Clear
'Response.BinaryWrite(Request.BinaryRead(Request.TotalBytes))
byteCount = Request.TotalBytes
'Response.BinaryWrite(Request.BinaryRead(varByteCount))
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin
'Exempel på hur man kan 'plocka ner' andra forumlärelement
'email = UploadRequest.Item("email").Item("Value")
contentType = UploadRequest.Item("blob").Item("ContentType")
filepathname = UploadRequest.Item("blob").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("blob").Item("Value")
'Create FileSytemObject Component
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
'Create and Write to a File
pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
' Set MyFile = ScriptObject.CreateTextFile(Left(Server.mappath(Request.ServerVariables("PATH_INFO")),pathEnd)&filename)
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("/" & mapp & "/" & filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
Response.Redirect "uploadpic.asp?do=klar&katalog=" & mapp & "&filen=" & filename & ""
'response.write "<b>Filens sökväg:</b> " & Server.mappath(filename) & "<br>"
'response.write "<b>Filnamn:</b> " & filename & "<br>"
'response.write "<b>Mappen:</b> " & mapp & "<br><br>"
'response.write "<img src=""../" & mapp & "/" & filename & """>"
Sub BuildUploadRequest(RequestBin)
'Get the boundary
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
'Get all data inside the boundaries
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
'Members variable of objects are put in a dictionary object
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
Pos = InstrB(Pos,RequestBin,getByteString("name="))
PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
'Test if object is of file type
If PosFile<>0 AND (PosFile<PosBound) Then
'Get Filename, content-type and content of file
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
'Add filename to dictionary object
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
'Add content-type to dictionary object
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
'Get content of object
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
'Get content of object
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
End If
'Add content to dictionary object
UploadControl.Add "Value" , Value
'Add dictionary object to main dictionary
UploadRequest.Add name, UploadControl
'Loop to next object
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop
End Sub
'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function
'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function
End If
jag vill att när en mapp inte finns, så ska det skapas en och där i ska bilden/filen läggas
Problemet löst...
Nej, inte riktigt än. ;)
Hur löste du problemet? Det skulle vara bra för andra som eventuellt hittar denna tråd i en sökning i framtiden.