Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    41

    Errore autorizzazione negata - a volte si' a volte no???

    Ragazzi, vi posto un bel quesito, io ci ho perso la testa gia' da qualche giorno.
    Allora: ho una pagina .asp che uso per fare (o meglio per far fare) l'upload delle foto su un sito web.
    Lo script per l'upload e' questo:

    codice:
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'Upload con ASP by ASPCode.it - http://www.aspcode.it						 '
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'variabili di configurazione
    Dim folder
    folder = "\catalogo"				'directory sul server con accesso in scrittura
    'fine variabili di configurazione
    
    Response.Expires=0
    Response.Buffer = TRUE
    Response.Clear
    
    Sub BuildUploadRequest(RequestBin)
    	PosBeg = 1
    	PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
    	boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
    	boundaryPos = InstrB(1,RequestBin,boundary)
    		Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
    		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)
    			If  PosFile<>0 AND (PosFile<PosBound) Then
    			PosBeg = PosFile + 10
    			PosEnd =  InstrB(PosBeg,RequestBin,getByteString(chr(34)))
    			FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
    			UploadControl.Add "FileName", FileName
    			Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
    			PosBeg = Pos+14
    			PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
    			ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
    			UploadControl.Add "ContentType",ContentType
    			PosBeg = PosEnd+4
    			PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
    			Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
    			Else
    			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
    		UploadControl.Add "Value" , Value	
    		UploadRequest.Add name, UploadControl	
    		BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
    	Loop
    End Sub
    Function getByteString(StringStr)
     For i = 1 to Len(StringStr)
     	char = Mid(StringStr,i,1)
    	getByteString = getByteString & chrB(AscB(char))
     Next
    End Function
    Function getString(StringBin)
     getString =""
     For intCount = 1 to LenB(StringBin)
    	getString = getString & chr(AscB(MidB(StringBin,intCount,1))) 
     Next
    End Function
    
    byteCount = Request.TotalBytes
    
    RequestBin = Request.BinaryRead(byteCount)
    Dim UploadRequest
    Set UploadRequest = CreateObject("Scripting.Dictionary")
    
    BuildUploadRequest  RequestBin
    
    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
    Set MyFile = ScriptObject.CreateTextFile(Server.mappath(folder)&"\"&filename)
     
    For i = 1 to LenB(value)
    	MyFile.Write chr(AscB(MidB(value,i,1)))
    Next
     
    MyFile.Close
    %>
    
    <html>
    <head>
    	<title>UPLOAD FILE</title>
    </head>
    <body>
    
    
    
    
    <table border=0 width=360 bgcolor=#FFFFFF cellspacing=1 align=center>
    	<tr>
    		<td width=400 align=center bgcolor=#40576f><FONT FACE="tahoma" color=#ffffff size=2>Il file <%=filename%> è stato inviato con successo.</FONT></td>
    	</tr>
    <tr><td></td></tr>
      <tr>
        <td width="400" height="30" bgcolor="#FFFFFF" align=center><font face=arial size=2 color=black>&lt; &lt; UPLOAD DI UN ALTRO FILE</font></td>
      </tr>
    </table>
    
    
    </body>
    </html>

    Se non ricordo male non ci ho affatto messo le mani sul codice.
    Il bello e' che a volte funziona senza problemi, altre volte mi ritorna questo errore:

    Errore di run-time di Microsoft VBScript error '800a0046'
    Autorizzazione negata
    /upload.asp, line 84

    la linea 84 dovrebbe essere questa:
    Set MyFile = ScriptObject.CreateTextFile(Server.mappath(folder) &"\"&filename)

    Non ho sinceramente saputo ricondurre una circostanza comune agli errori. La cartella di destinazione ha gia' dei file, che tramite l'upload vanno sovrascritti o ne vanno aggiunti di nuovi. Riesco ad uploadarne diversi, poi capita un file che genera l'errore. L'errore e' legato cmq al file, nel senso che se io mando su il file 1.jpg e ottengo l'errore, poi mando su il 2,jpg e il 3,jpg senza problemi, poi se rimando su il 1.jpg mi ritorna l'errore.

    Avete qualche idea? Devo sentire il provider (hostingsolutions)?

    Grazie in anticipo

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Dato che il file potrebbe esistere gia' devi utilizzare la giusta sintassi:

    Set MyFile = ScriptObject.CreateTextFile(Server.mappath(folder) &"\"&filename,true)


    info: http://www.devguru.com/technologies/vbscript/14054.asp

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    41
    Funziona, grazie! Ho provato a mandar su 5-6 file, e non ho avuto intoppi. Provero' ancora ma credo sia la soluzione giusta.

    Rimane la curiosita': come mai, sempre nel caso di dover sovrascrivere file esistenti, a volte funzionava e a volte no?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.