Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Uno script da controllare (modifica upload foto)

    Salve a tutti,
    ho una pagina la quale contiene un form che compilandolo permette di modificare una news scritta in precendenza (usando lo stesso form), il form mi manda come azione ad una pagina che fa l'upload della foto e il conseguente aggiornamento del database.
    Lo script esegue un controllo sull'estensione del file (accetta files d'immagine), ma purtroppo lo script funziona solo se la foto non c'è o se viene settato valore foto=null nel campo relativo alla foto del db.

    Questo è lo script:

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>controlloNews</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    
    </head>
    
    <body >
    
          <%	  
    ' Se il server supera il limite ti rimando alla pagina di erroreUpload
    Server.ScriptTimeout = 120
    
    if session("login") then
    
    'Questa variabile setta il percorso di dove effettuare l upolad
    'la cartella non puo non esistere lo script non la crea ! ! !
    
    percorso = "/news/foto/"
    
    'script per settare la data della foto
    gg=datePart("d", now())
    mm=datePart("m",now())
    aaaa = datePart("yyyy", now())
    data = gg &"/"& mm & "/" & aaaa
    
    hh=datePart("h",now())
    min=datePart("n",now())
    sec=datePart("s",now())
    
    ' da in futuro il nome alla foto in modo tale dei avere un nome univoco per ogni foto
    mascheraNome = gg &"_"& mm & "_" & aaaa &"__"& hh &"_"& min &"_"& sec
    
    id = Request.QueryString("id")
    
    'script per la lettura binaria dei cambi
    
    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)
    
    	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,"titolo") > 0 then
    			titolo = ContenutoFile
    		end if	
    		if instr(Intestazione,"testoNews") > 0 then
    		testoNews = ContenutoFile
    		end if	
    		if instr(Intestazione,"foto") > 0 then
    			foto = ContenutoFile
    		end if	
    			
    		' Qui recupero il file da uploadare (se presente) foto1 
    		if instr(Intestazione,"foto") > 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
        		    NomeFile = mid(NomeUpload,i + 1)
        		else
        			NomeFile = NomeUpload
        		end if
          				
    			'Qui ricavo l estensione del file (se presente) per stabilire quale file passa e quale no, 
    			' nel mio caso gif e jpeg se non è di questo tipo mi da la pag di errore
    			
    			if NomeFile > "" then
    				dim arrParti
    				arrParti=split(NomeFile,".")
    				dim strEstensione
    				strEstensione=arrParti(UBOUND(arrParti))
    				
    			Select Case strEstensione
    				Case "gif","jpeg","jpg"
    			' Scrivo il file sul server
    				if i<>0 then
    					Set FSO = CreateObject("Scripting.FileSystemObject")
    					Upload1 = True
    					DimensioneFile1 = len(ContenutoFile)
    					'qui va inserito uno script che controlla il il peso dell immagine
    					EstensioneFile1 = right(ContenutoFile,3)
    					NomeFile = mascheraNome &"."& strEstensione
        				Set textStream = FSO.CreateTextFile(server.mappath(percorso & NomeFile), True, False)
        				textStream.Write ContenutoFile
        				textStream.Close
        				Set textStream = Nothing
    	   				Set FSO = Nothing
    				  end if
    			Case else
    				' Se il file nn è tipo immagine vai alla pagina di errore
    				Response.Redirect("erroreUpload.htm")
    			end Select
    	end if
    	end if	
    		next
    end if		
    
    'aggiornamento dati nella tabella
    set conn = server.CreateObject("ADODB.Connection")
    conn.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & server.MapPath("/mdb-database/news.mdb"))
    
    dim rec
    rec = "Update news set titolo='"&titolo&"', testo='"&testoNews&"', foto='"&NomeFile&"' where id="&id
    	
    'controllo l esito del messaggio 
    on Error Resume next
    conn.execute rec
    if err = 0 then
    rec.close
    set rec = nothing
    Response.Redirect("esitoPositivo.htm")
    risultato = "ok"
    else
    risultato = "ko"
    response.Redirect("errore.htm")
    end if
    else response.Redirect("login.asp")
    end if
    %>
    </body>
    </html>
    La cosa più strana è che se io ometto la seguente riga, (relativa al response.redirect) lo script funziona, ma mi accetta tutti i tipi di files.
    codice:
    Case else
    		' Se il file nn è tipo immagine vai alla pagina di errore
    		'Response.Redirect("erroreUpload.htm")
                             ' ho messo l apice di commento 
    	end Select
    ho controllato questo script per filo e per segno ma non riesco a trovare l'errore, la cosa piu strana che usando lo stesso script per effettuare un inserzione mi funziona.

    vi ringrazio in anticipo.

  2. #2
    raga, chiedo scusa, lo so che lo script è lungo e noioso da leggere, cmq se mi dite come posso fare per crearmi un piccolo debug, o dove più o meno sbaglio, il resto lo faccio da me, cmq lo script è tratto da quello presente negli script di asp.html.it nella sezione script.

    Grazie, ciao.

  3. #3
    non per dire le stesse cose, ma in questi casi suggerisco di abbandonare questo script (che, seppur valido, presenta spesso difficoltà di utilizzo) e di usare una classe molto ben fatta e sicura che è l'upload di Baol74 (lo trovi in firma all'utente Baol74 oppure cercando su google)....conta che con quella classe riduci il tuo script di chilometri ad una manciata di righe, e il controllo su estensioni e tipi di file è intrinsico allo script
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    a dire il vero ci avevo pensato, ma nn sono riuscito a trovarlo nemmeno nella sezione script, cmq se potresti indicarmi qualche link utile e soprattutto qualche sito dove spiega il suo utilizzo, visto che l'ultima volta che l'ho utilizzato non sono riuscito a farlo partire (forse per mia negligenza) te ne sarei molto grato.

    Grazie, ciao.

  5. #5
    http://forum.html.it/forum/showthrea...97#post8721397

    in firma trovi da scaricare l'upload di baol con anche degli esempi...se poi hai altri problemi torna pure
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Grazie per la tua disponibilità

  7. #7
    Ti ringrazio di nuovo santino, per il suggerimento, sono riuscito a far funzionare lo script, ma ho riscontrato il seguente problema:

    vorrei filtrare solo le immagini, e di conseguenza avvisare l'utente se è stato inserito un file nn valido, questo lo script:

    codice:
    Dim oUpload
    	Set oUpload = new cUpload
    		oUpload.AutoRename = False
    		oUpload.Overwrite = true		
    		oUpload.SetPath "/news/foto"
    		oUpload.Upload
    		
                              'filtro immagini
    		oUpload.UploadOnly "Images"
    		if .oUpload.eof then
                               response.write "file non valido"
                              end if
    
    		oUpload.SaveAs mascheraNome&"."&oUpload.Files("ext")
    		'per recuperare il nome del file
    		NomeFile = oUpload.GetFileName() 
    		'per recuperare i campi
    		titolo= oUpload.Form("titolo")
    		sottoTitolo= oUpload.Form("sottoTitolo")
    		testoNews= oUpload.Form("testoNews")
    		link= oUpload.Form("link")
    	
    	Set oUpload=Nothing
    Ovviamente prima di postare ho fatto le dovute ricerche tra i post precedenti

    Grazie di nuvo per la tua disponibilità, Ciao.

  8. #8
    non ho capito quale sarebbe la domanda, cmq c'è un errore di sintassi (e logico) in quello che hai postato

    codice:
    ...
    ...
    
    if oUpload.eof then
           response.write "file non valido o nessun file caricato"
    else
                    oUpload.SaveAs mascheraNome&"."&oUpload.Files("ext")
    		'per recuperare il nome del file
    		NomeFile = oUpload.GetFileName()
    end if
    
    ...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    perfetto! funziona,
    se ben avrei capito l'errore logico è:

    se un file nn esiste non è possibile di conseguenza assegnargli un nome

    e quello di sintassi sarebbe se il file non esiste notifica, ALTRIMENTI procedi

    Grazie, ciao.

  10. #10
    quello logico era:

    se il file non esiste (o cmq è stato caricato un file non valido) Avverti, altrimenti salva sul server

    quello di sintassi era un PUNTO prima di oUpload che non so se fosse un errore di trascrizione
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.