Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    138

    Verifica prima di upload immagini

    Partendo dall'upload di Pertits, ho adattato alle mie esigenze lo script per verificare le caratteristiche delle immagini prima di caricarle sul server remoto:

    ---------------------------------------------------------------------------------------
    i = 0
    For Each File in Upload.Files
    'verifico estensione
    Ext = UCase(Right(File.Path, 3))
    If Ext <> "JPG" and Ext <> "BMP" and Ext <> "GIF" and Ext <> "PNG" Then
    File.Delete
    response.Redirect("MsgFileNC_TipoFile.asp")
    response.End
    End If
    'verifico dimensione
    select case i
    case 0
    Upload.SetMaxSize 50000, True
    If Err.Number = 8 Then 'errore di file troppo grande
    Response.Redirect("MsgFileNC_ExtraDimImgP.asp")
    response.End
    end if
    case 1
    Upload.SetMaxSize 300000, True
    If Err.Number = 8 Then 'errore di file troppo grande
    Response.Redirect("MsgFileNC_ExtraDimImgG.asp")
    response.End
    end if
    end select
    i = i + 1
    Next
    ----------------------------------------------------------------------------------------

    Mi esegue giusta la verifica dell'estensione ma la dimensione dei file non se la fila proprio. Non dà messaggi di errore quindi mi viene il dubbio che il ciclo select...end select sia da rivedere. I vari "case" sono scritti giusti? Oppure che il principio da me adottato per verificare la dimensione dei file è cannato (il ciclo each...next).

    La pagina per l'upload delle immagini comprende, in un unico form, due campi file (uno per l'immagine piccola e l'altro per la sua corrispettiva più grande) e la mia intenzione, con il ciclo select di cui sopra, è di analizzare prima una e poi l'altra.

    Avete qualche suggerimento su dove sta l'inghippo? Grazie

    P.S.: poichè lo script avrà tutte le righe allineate a sinistra e i cicli if e select risulteranno difficili da individuarsi (e di ciò me ne scuso...) mi sapete dire come si fa per rispettare le tabulazioni quando si invia, come in questo caso, del codice.

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Per indentare il codice devi metterelo tra i tag [ code ] cliccando sul pulsante # nell'inserimento del messaggio.
    Sei sicuro che questa sintassi

    If Err.Number = 8 Then 'errore di file troppo grande

    sia corretta?
    Sei su Aruba? In quel caso hai anche a disposizione aso.jpeg che ti consente di caricare una sola immagine e da questa generare la thumbnail (anche on the fly).

    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    138
    La sintassi è giusta perchè facendo girare lo script, così come è stato generato, funziona.

    Sì, sono su Aruba e darò un'occhiata al aso.jpeg

    Grazie di nuovo

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Volevo dire "aspjpeg" della Persits.

    Roby

  5. #5
    Ti do una soluzione alternativa per il tuo problema con la libreria Persits:

    tu sai che già con la riga:

    Count = Upload.Save(percorso)

    il file è già sul tuo server.
    A questo punto per estrarre le caratteristiche del file puoi fare qualcosa del genere:

    Set File = Upload.Files("file")

    If Not File Is Nothing Then

    filename=File.FileName 'questo ad esempio per ricavare il nome del file per un'eventuale successiva rinominazione

    size=File.Size 'questo per ricavare la dimensione del file appena caricato

    end if

    A questo punto fai il controllo, e se supera la dimensione consentita, lo elimini e metti il messaggio di errore...quindi:

    presupponendo che tu abbia dato alla variabile AllowedSize il valore massimo, metterai:

    if size>AllowedSize then
    response.write "File troppo grande!"
    file.delete
    end if

    prova e facci sapere...

    Ciao
    Ale

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    138
    Un grazie ad ale_1976. Dovendo gestire due file all'interno di uno stesso form ho elaborato il seguento script tra quello di base di Persits e i tuoi suggerimenti.

    [
    <%
    Set Upload = Server.CreateObject("Persits.Upload")

    ' salvo in memoria, il path viene omesso
    Count = Upload.Save
    percorso = Server.MapPath("/public")

    ' Controllo che siano stati indicati due files
    If Count <> 2 Then
    response.Redirect("../MsgFileNC_NumeroFile.asp")
    Response.End
    End If
    ' Controllo estensioni
    For Each File in Upload.Files
    Ext = UCase(Right(File.Path, 3))
    If Ext <> "JPG" and Ext <> "BMP" and Ext <> "GIF" and Ext <> "PNG" Then
    File.Delete
    response.Redirect("../MsgFileNC_TipoFile.asp")
    response.End
    End If
    next

    ' Obtain File objects
    Set File1 = Upload.Files("file1") 'immagine piccola
    Set File2 = Upload.Files("file2") 'immagine grande
    ' Build name from session ID
    Name = Session.SessionID

    'Imposto e controllo dimensione del primo file
    AllowedSize = 50000
    size = File1.Size
    if size>AllowedSize then
    Response.Redirect("../MsgFileNC_ExtraDimImgP.asp")
    file1.delete
    response.End
    end if
    AllowedSize = 300000
    size = File2.Size
    if size>AllowedSize then
    Response.Redirect("../MsgFileNC_ExtraDimImgG.asp")
    file1.delete
    file2.delete
    response.End
    end if

    ' Save
    File1.SaveAs percorso & "\ImmaginiPiccole\Portfolio\" & Name & File1.Ext
    File2.SaveAs percorso & "\ImmaginiGrandi\Portfolio\" & Name & File2.Ext

    Response.Redirect("../InserimentoImmagini.asp")
    %>
    ]

    Lo script funziona ma, essendo neofita, probabilmente potrebbe essere migliorato. Mi piacerebbe quindi avere suggerimenti e opinioni di chi capisce di ASP più di me.
    Grazie ancora.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    138
    Chiedo di nuovo scusa ma qualcosa di come indentare giusto il codice mi deve essere sfuggita....

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    138
    codice:
    <%
    Set Upload = Server.CreateObject("Persits.Upload")
    
    ' salvo in memoria, il path viene omesso
    Count = Upload.Save
    percorso = Server.MapPath("/public")
    
    ' Controllo che siano stati indicati due files
    If Count <> 2 Then 
    	response.Redirect("../MsgFileNC_NumeroFile.asp")
    	Response.End
    End If
    ' Controllo estensioni
    For Each File in Upload.Files 
    	Ext = UCase(Right(File.Path, 3)) 
    	If Ext <> "JPG" and Ext <> "BMP" and Ext <> "GIF"  and Ext <> "PNG" Then 
    		File.Delete 
    		response.Redirect("../MsgFileNC_TipoFile.asp")
    		response.End
    	End If 
    next
    
    ' Obtain File objects
    Set File1 = Upload.Files("file1")	'immagine piccola
    Set File2 = Upload.Files("file2")	'immagine grande
    
    'Imposto e controllo dimensione del primo file
    AllowedSize = 50000
    size = File1.Size
    if size>AllowedSize then
    	Response.Redirect("../MsgFileNC_ExtraDimImgP.asp")
    	file1.delete
    	response.End
    end if
    AllowedSize = 300000
    size = File2.Size
    if size>AllowedSize then
    	Response.Redirect("../MsgFileNC_ExtraDimImgG.asp")
    	file1.delete
    	file2.delete
    	response.End
    end if
    
    ' Save
    File1.SaveAs percorso & "\ImmaginiPiccole\Portfolio\" & File1.FileName
    File2.SaveAs percorso & "\ImmaginiGrandi\Portfolio\" & File2.FileName 
    	
    Response.Redirect("../InserimentoImmagini.asp")
    %>
    Posto il codice dello script per caricare delle immagini in una cartella su un server remoto. Lo script può essere applicato a più file (nel mio caso sono due). Rispetto al codice postato precedentemente ho apportato delle modifiche poichè ho trovato degli errori. ora è perfettamente funzionante e a disposizione di chiunque ne abbia bisogno. La mia limitata conoscenza di ASP non mi permette di dire se sia migliorabile o meno ma, come detto prima, funziona e quindi...

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.