Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    37

    Immagini non cancellabili, colpa dello script?

    Ciao a tutti, ho ovviamente un problema.
    Ho fatto un sito con la gestione dei dati online, tra queste funzioni c'è anche l'upload di immagini.
    Per dare meno noie possibili e meno operazioni da far fare al mio cliente ho messo uno script che mi ridimensiona automaticamente l'immagine in base alle necessità.
    Il mio problema è che spesso non riesco a cancellare delle immagini, non ho mai trovato una soluzione finchè non mi è venuto il dubbio: non è che lo script che ridimensiona le immagini tiene aperto il file e quindi non è cancellabile?
    infatti alcune immagini da non cancellabili sono diventate poi tali, quindi l'unica cosa che mi vien da pensare è che sia a causa dello script perchè in quel momento qualcuno sta visualizzando l'immagine!

    pensate che la mia teoria sia corretta? è possibile risolvere il problema?
    questo è lo script che modifica l'immagine:

    codice:
    <%@ Page Language="C#" Debug="true" %>
    
    <%@ import Namespace="System"%>
    <%@ import Namespace="System.IO"%>
    <%@ import Namespace="System.Drawing" %>
    <%@ import Namespace="System.Drawing.Imaging" %>
    <%@ import Namespace="System.Text.RegularExpressions" %>
    
    
    <script Language="C#" runat="server">
    void Page_Load(Object sender, EventArgs e){
    
    int microWidth = 80;
    int microHeight = 60;
    int miniWidth = 160;
    int miniHeight = 120;
    int rndWidth = 130;
    int rndHeight = 98;
    int galWidth = 530;
    int galHeight = 398;
    string strFileName = "";
    string destinazione = Server.MapPath("./public/");
    
    double rThumbnailWidth = 320.0;
    double rThumbnailHeight = 240.0;
    double rThumbnailTemp = 0.0;
    
    System.Drawing.Image orgImage;
    
    	if (Request.QueryString["src"] != "")
    	{
    		
    		strFileName = Convert.ToString(Request.QueryString["src"]);
    		
    		
    		if (strFileName != ""){
    			orgImage = System.Drawing.Image.FromFile(destinazione + strFileName + ".jpg");
    			
    			if (Request.QueryString["size"] == "mini"){
    				rThumbnailWidth = miniWidth;
    				rThumbnailHeight = miniHeight;
    			}
    			
    			if (Request.QueryString["size"] == "micro"){
    				rThumbnailWidth = microWidth;
    				rThumbnailHeight = microHeight;
    			}
    			
    			if (Request.QueryString["size"] == "gallery"){
    				rThumbnailWidth = galWidth;
    				rThumbnailHeight = galHeight;
    			}
    			
    			if (Request.QueryString["size"] == "rnd"){
    				rThumbnailWidth = rndWidth;
    				rThumbnailHeight = rndHeight;
    			}
    			
    			// Ridimensionamento per immagini verticali
    			if  (orgImage.Height > orgImage.Width) {
    				rThumbnailTemp = rThumbnailHeight;
    				rThumbnailHeight = rThumbnailWidth;
    				rThumbnailWidth = rThumbnailTemp; 
    			}
    
    
    			using(Bitmap bitmap = new Bitmap(orgImage, (int)(rThumbnailWidth), (int)(rThumbnailHeight)))
    			{
    				Response.ContentType = orgImage.RawFormat.ToString();
    				Response.Clear();
    				Response.BufferOutput = true;
    				Response.AddHeader("Content-Disposition", "filename=" + strFileName);
    				bitmap.Save(Response.OutputStream, orgImage.RawFormat);
    				Response.Flush();
    			}
    		}
    	}
    }
    		
    </script>
    Grazie per l'attenzione

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    dopo Response.Flush(); metti orgImage.Dispose();
    Pietro

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    37
    Grazie, implemento subito e ne testo il comportamento..
    praticamente rilascia l'oggetto caricato ?

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da lollotek
    Grazie, implemento subito e ne testo il comportamento..
    praticamente rilascia l'oggetto caricato ?
    Sì, però io lo metterei dentro il blocco finally di un try - Catch

    Pietro

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.