Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Errore upload con browser diversi

    Ciao a tutti,

    avrei un problema con l' upload di alcuni file in asp classico.

    Ho uno script di upload che mi permette di salvare i file inseriti in una type="file" e il valore immesso in una type="text".

    Il problema è questo: Su Iexplorer il file viene salvato ma su firefox no... Dovrei aver capito la causa, come nome del file iexplorer prende il percorso completo (es: C:\documenti\miofile.png) mentre firefox prende effettivamente solo il nome del file (miofile.png ).

    Avete consigli su come faccio a risolvere il problema??

    Metto qua sotto qualche riga di codice...

    < form.htm >

    codice:
    <form action="upload.asp" method="post" enctype="multipart/form-data">
    CAMPO TESTO
    <input type="text" name="testo1">
    FILE
    <input type="file" name="file1">
    <input type="submit" value="Upload">
    </form>
    < upload.asp >

    codice:
    percorso = "/upload/documentazioni/"
    ByteRicevuti = Request.TotalBytes
    
    if ByteRicevuti > 0 then
    	DatiRicevuti = Request.BinaryRead(ByteRicevuti)
    	For i = 1 To lenB(DatiRicevuti)
    		FileBinario = FileBinario & chr(ascB(midB(DatiRicevuti,i,1)))
    	Next
    	FirmaFile = left(FileBinario,instr(FileBinario,"" & vbCrLf)-1)
    	ArrPezzi = split(FileBinario,FirmaFile)
    				response.write(b & "
    ")
       ' ArrPezzi(0) Contiene tutto il percorso del file compreso il nome del file con l' estensione
    	for item = 1 to ubound(ArrPezzi)-1
    		Inizio = instr(ArrPezzi(item),"" & vbCrLf & "" & vbCrLf)
    		Intestazione = left(ArrPezzi(item),Inizio-1)		
    		Inizio = Inizio + len("" & vbCrLf) + len("" & vbCrLf)
    	    	ContenutoFile = mid(ArrPezzi(item),Inizio,len(ArrPezzi(item))-Inizio-1)
    
    		' Recupero i campi se sono compilati
    		if instr(Intestazione,"testo1") > 0 then
    			testo1 = ContenutoFile
    		end if
    
    
    	if instr(Intestazione,"file1") > 0 then
    		    i = instr(Intestazione,"filename=")
    			j = instr(i + 10,Intestazione,chr(34))			
    			NomeUpload = mid(Intestazione,i + 10,j-i-10)
    'response.Write(NomeUpload)
    
    	if not Left(a, 12) = "Mozilla/5.0 " then 
    	
    			i = instrRev(NomeUpload,"\")
    	'		response.Write(NomeUpload)			
    			if i<>0 then
        		    NomeFile = mid(NomeUpload,i + 1)
        		else
        			NomeFile = NomeUpload
        		end if
    		'	response.write(i)
          		if i<>0 then
    				Set FSO = CreateObject("Scripting.FileSystemObject")
    				Upload1 = True
    				DimensioneFile1 = len(ContenutoFile)
    				EstensioneFile1 = right(ContenutoFile,3)
    				NomeFile1 = NomeFile
        			Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile1), True, False)
        			textStream.Write ContenutoFile
        			textStream.Close
        			Set textStream = Nothing
    	   			Set FSO = Nothing
        	   end if
    		end if 
    		
    	else
    	
    		i = instrRev(NomeUpload,"\")
    			response.Write(NomeUpload)			
    			if i<>0 then
        		    NomeFile = mid(NomeUpload,i + 1)
        		else
        			NomeFile = NomeUpload
        		end if
    		'	response.write(i)
          		if i<>0 then
    				Set FSO = CreateObject("Scripting.FileSystemObject")
    				Upload1 = True
    				DimensioneFile1 = len(ContenutoFile)
    				EstensioneFile1 = right(ContenutoFile,3)
    				NomeFile1 = NomeFile
        			Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile1), True, False)
        			textStream.Write ContenutoFile
        			textStream.Close
        			Set textStream = Nothing
    	   			Set FSO = Nothing
        	   end if
    		end if 
    
    next
    
    .....

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    E IE (come quasi sempre) che sbaglia, per motivi di sicurezza negli altri browser viene "omesso" (d'altronde per il 99% dei casi se invio un file ad un server dove lo tengo sul mio pc saranno fatti mie).
    Detto questo se sai a priori (vedi intranet) dove risiedono questi file (tipo C:\documenti\miofile.png) puoi aggiungere un campo nascosco nel form <input type="hidden" name="percorso_file" value="tuo-percorso-fisico-del-file-nel-pc"> se non lo sai dovrai (eventualmente) creare una cartella temporanea sul server e aggiungere quel percorso, non credo ci siano altre possibilità
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Originariamente inviato da cavicchiandrea
    E IE (come quasi sempre) che sbaglia, per motivi di sicurezza negli altri browser viene "omesso" (d'altronde per il 99% dei casi se invio un file ad un server dove lo tengo sul mio pc saranno fatti mie).
    Detto questo se sai a priori (vedi intranet) dove risiedono questi file (tipo C:\documenti\miofile.png) puoi aggiungere un campo nascosco nel form <input type="hidden" name="percorso_file" value="tuo-percorso-fisico-del-file-nel-pc"> se non lo sai dovrai (eventualmente) creare una cartella temporanea sul server e aggiungere quel percorso, non credo ci siano altre possibilità
    Io purtroppo non so da che cartella gli utenti caricano i file...
    Logicamente non posso neanche mettergli la restrizione di farglieli caricare obbligatoriamente da una cartella apposita, anche perchè molti non lo capirebbero ^^

  4. #4
    da quello che so, quando fai upload col classico [sfoglia...] il browser invia il file (in binario) e il nome-file senza il path. non ho capito quale sia il problema...

  5. #5
    Originariamente inviato da optime
    da quello che so, quando fai upload col classico [sfoglia...] il browser invia il file (in binario) e il nome-file senza il path. non ho capito quale sia il problema...
    Il problema è che con quello script di upload che uso io IE salva effettivamente il file perchè andando a prendere il contenuto del file all' interno trovi anche il percorso da dove è stato selezionato il file, mentre firefox da una pagina all' altra passa solo il nome del file...

    Spero di essermi spiegato meglio...

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Prova cosi':

    i = instrRev(NomeUpload,"\")
    if i=0 then i = instrRev(NomeUpload,"/")
    if i=0 then i = 1
    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

  7. #7
    Originariamente inviato da br1
    Prova cosi':

    i = instrRev(NomeUpload,"\")
    if i=0 then i = instrRev(NomeUpload,"/")
    if i=0 then i = 1

    mi restituisce quest' errore

    Microsoft VBScript runtime error '800a0046'

    Permission denied

    /si/censimentoweb-copia/upload.asp, line 103


    questa è la line 103

    codice:
     Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile1), True, False)

  8. #8
    Come non detto

    Funziona ma quando salva il file omette la prima lettera (sempre su FF)...

    Su explorer funziona bene come sempre...

    adesso sono a questo punto:

    codice:
    percorso = "/upload/documentazioni/"
    
    ByteRicevuti = Request.TotalBytes
    'response.Write(ByteRicevuti)
    
    if ByteRicevuti > 0 then
    	DatiRicevuti = Request.BinaryRead(ByteRicevuti)
    	For i = 1 To lenB(DatiRicevuti)
    		FileBinario = FileBinario & chr(ascB(midB(DatiRicevuti,i,1)))
    	Next
    	FirmaFile = left(FileBinario,instr(FileBinario,"" & vbCrLf)-1)
    	ArrPezzi = split(FileBinario,FirmaFile)
       ' ArrPezzi(0) Contiene tutto il percorso del file compreso il nome del file con l' estensione
    	for item = 1 to ubound(ArrPezzi)-1
    		Inizio = instr(ArrPezzi(item),"" & vbCrLf & "" & vbCrLf)
    		Intestazione = left(ArrPezzi(item),Inizio-1)		
    		Inizio = Inizio + len("" & vbCrLf) + len("" & vbCrLf)
    	    	ContenutoFile = mid(ArrPezzi(item),Inizio,len(ArrPezzi(item))-Inizio-1)
    
    		' Recupero i campi se sono compilati
    		if instr(Intestazione,"testo1") > 0 then
    			testo1 = ContenutoFile
    		end if
    
    
    		if instr(Intestazione,"file1") > 0 then
    	    	i = instr(Intestazione,"filename=")
    			j = instr(i + 10,Intestazione,chr(34))			
    			NomeUpload = mid(Intestazione,i + 10,j-i-10)
    
    			i = instrRev(NomeUpload,"\")
    			if i=0 then i = instrRev(NomeUpload,"/")
    			if i=0 then i = 1 
    	'		response.Write(NomeUpload)			
    			if i<>0 then
        		    NomeFile = mid(NomeUpload,i + 1)
        		else
        			NomeFile = NomeUpload
        		end if
    		'	response.write(i)
          		if i<>0 then
    				Set FSO = CreateObject("Scripting.FileSystemObject")
    				Upload1 = True
    				DimensioneFile1 = len(ContenutoFile)
    				EstensioneFile1 = right(ContenutoFile,3)
    				NomeFile1 = NomeFile
        			Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile1), True, False)
        			textStream.Write ContenutoFile
        			textStream.Close
        			Set textStream = Nothing
    	   			Set FSO = Nothing
        	   end if
    		end if 
    
    next
    
    ....

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da br1
    Prova cosi':

    i = instrRev(NomeUpload,"\")
    if i=0 then i = instrRev(NomeUpload,"/")
    if i=0 then i = 1
    Perdona Bruno ma come fa un if ad avere due confronti uguali ma due risultati diversi e sopratutto cosa dovrebbe fare? (perdona la richiesta strana ma con asp sono un po arrugginito)

    Originariamente inviato da markz89
    Il problema è che con quello script di upload che uso io IE salva effettivamente il file perchè andando a prendere il contenuto del file all' interno trovi anche il percorso da dove è stato selezionato il file, mentre firefox da una pagina all' altra passa solo il nome del file...

    Spero di essermi spiegato meglio...
    Resta comunque il dubbio a cosa ti serva il percorso del file visto che fai un upload (cioè trasferisci un file dalla cartella x di un pc ad una cartella y sul tuo server/sito)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da cavicchiandrea
    Perdona Bruno ma come fa un if ad avere due confronti uguali
    Non ragioni quadridimensionalmente (cit.) : la prima if agisce solo se la precedente assegnazione fallisce... e la seconda if se fallisce la successiva assegnazione

    Comunque c'e' un difetto... se lo scopo e' ottenere il nome del file pulito andrebbe scritta cosi':
    codice:
    i = instrRev(NomeUpload,"\")
    if i=0 then i = instrRev(NomeUpload,"/")
    ' if i=0 then i = 1
    path_salvataggio = server.mapPath("percorso")&"\"&mid(NomeUpload,i+1)
    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

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 © 2025 vBulletin Solutions, Inc. All rights reserved.