ASP.NET: upload di foto con creazione di thumbnails

29 09 2007

Oggi vi propongo un piccolo frammento di codice in vb.net che permette di effettuare da una pagina aspx l’upload di una foto e la creazione del relativo thumbnail.

Per prima cosa, inseriamo sulla pagina un controllo FileUpload e un pulsante che darà il via al processo di upload:

<asp:FileUpload ID=”FileUpload1″ runat=”server” />
<asp:Button ID=”Button1″ runat=”server” Text=”Carica Immagine” />

in seguito nel CodeBehind relativo al click sul pulsante realizziamo l’upload e la creazione del ThumbNail:


Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
If Not FileUpload1.PostedFile Is Nothing And FileUpload1.PostedFile.ContentLength > 0 Then
Dim unixtime As String
unixtime = (DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds
unixtime = unixtime.Replace(",", "")
'Dim fn As String = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName)
Dim fn As String = unixtime &amp; "-" &amp; System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName)
Dim SaveLocation As String = Server.MapPath("foto") &amp;  "\\\\" &amp;  fn

Try
FileUpload1.PostedFile.SaveAs(SaveLocation)
'Creazione Miniatura
Dim img As System.Drawing.Bitmap
Dim imgNew As System.Drawing.Image
Dim inp As New IntPtr()

img = img.FromFile(SaveLocation)
imgNew = img.GetThumbnailImage(100, 62, Nothing, inp)
imgNew.Save(Server.MapPath("foto") &amp; "\\\\thumbs\\\\" &amp; fn, System.Drawing.Imaging.ImageFormat.Jpeg)

'Codice per eventuale insert in database

Catch Exc As Exception
Response.Write("Error: " &amp; Exc.Message)
End Try
Else
Response.Write("Please select a file to upload.")
End If
End Sub

Finito! La foto originale verrà caricata nella drectory ‘foto’, mentre la miniatura realizzata utilizzando il metodo GetThumbnailImage (grazie a Gianpiero per l’esaustivo tutorial sull’utilizzo) verrà creata in ‘foto/thumbs’.



Azioni

Informazione

2 risposte

11 01 2008
Davide

Grazie 1000! questo script mi è stato molto utile!
unico problema che ho riscontrato è che se provo a cancellare i file contenuti nella cartella “foto” mi danno un errore tipo: “file utilizzato da un altro processo”. Cosa può essere? come posso “liberare le risorse”?
Grazie
Davide.

25 11 2008
Giulio

Anche io ho il problema di immagini “bloccate”.

Ho dovuto fare una procedura nella pagina di redirect, da lì funziona.

Ciao

Lascia un commento