Visualizzazione dei risultati da 1 a 10 su 14

Visualizzazione discussione

  1. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Quote Originariamente inviata da ciro78 Visualizza il messaggio
    grazie per la risposta

    alcune precisazioni: parliamo di dot net 2
    i file non devono essere accessibili direttamente

    es

    www.miosito.com/file.doc


    ovviamente non posso spostare la directory che contiene i file.

    ho fatto qualcosa ma tengo in ufficio il codice. domani la posto e magari la miglioriamo
    Recente il 2...
    Allora ti conviene fare una cosa del genere:
    codice:
        //IMPORTANTE: se usi la session devi far derivare la tua classe da IRequiresSessionState    
        public class NoLeechImageHandler : IHttpHandler, IRequiresSessionState
        {
            public void ProcessRequest(System.Web.HttpContext ctx)
            {
                HttpRequest req = ctx.Request;
                string serverPath = ctx.Server.MapPath(req.FilePath);
                //se il file non esiste 
                if (!File.Exists(serverPath))
                {
                    ctx.Response.StatusDescription = "Image not found";
                    ctx.Response.StatusCode = 404;
                    return;
                }
                //controllo che nella sessione ci sia una autenticazine. 
                //Potreesti farlo anche con il tuo sistema di autenticazione Forms ad esempio
                string path = (ctx.Session["Auth"] != null && (bool)ctx.Session["Auth"]) ?
                    serverPath :
                    Path.Combine(ctx.Server.MapPath("~/images"), "default.jpg");
                ctx.Response.ContentType = "image/jpg";
                ctx.Response.Clear();
                ctx.Response.BufferOutput = true;
                MemoryStream m = new MemoryStream();
                Image i = Image.FromFile(path);
                i.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg);
                ctx.Response.BinaryWrite(m.ToArray());
            }
            public bool IsReusable { get { return true; } }
        }
    In questo caso a chi chiama /images/* (/images/default.jpg o quello che vuoi) viene restituito il 404 se il file non esiste, il default.jpg se non è autenticato, e il file legittimo se è autenticato.
    da modificare eventualmente il tipo di autenticazione.
    Ultima modifica di U235; 09-11-2016 a 23:54

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.