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

    [ASP .NET 2.0] Apertura File in cartella diversa dal sito

    Ciao a tutti, ho un problema con l'apertura di un pdf che si trova in una cartella sul server che non è quella della root del sito.
    Ad esempio, io ho il mio sito sotto c:\inetpub\wwwroot\ecc e voglio accedere al file che si trova sotto e:\conti\riepiloghi.pdf
    Ho provato a passargli il percorso fisico del file ma mi da errore, e provando a mettergli il server.mappath mi dice che non è un percorso virtuale valido. Qualcuno sa come posso risolvere questa situazione?
    Ciao e grazie mille.
    ...NO ONE IS INNOCENT ANYMORE...

  2. #2
    Il Server.MapPath() ti restituisce un percorso assoluto valido di una cartella presente nel sito (e quindi dalla root in poi).

    Che errore ti ha dato quando hai cercato di aprire il file sul disco E: ? Io penso siano stati errori di permessi.. in questo caso bisogna "giocare" sui permessi della cartella di destinazione per accettare le richieste in lettura dell'utente ASPNET (o NETWORK SERVICE se usi un 2003 server) per i file pdf.


  3. #3
    Ho messo questo codice:

    codice:
    session("PathFileFattura") = "c:\"
    sFileFattura = "ciao.pdf"
    Response.Redirect(Session("PathFileFattura") & sFileFattura)
    e mi da semplicemente impossibile visualizzare la pagina...
    ...NO ONE IS INNOCENT ANYMORE...

  4. #4
    Scaricati FileMon della sysinternals e filtra il processo del WorkerProcess di ASP.NET. Lanci la tua applicazione guarda che file va a pescare il tuo file. Se hai un problema di permessi.. da li lo vedi.

  5. #5
    Originariamente inviato da rotteninside
    Ho messo questo codice:

    codice:
    session("PathFileFattura") = "c:\"
    sFileFattura = "ciao.pdf"
    Response.Redirect(Session("PathFileFattura") & sFileFattura)
    e mi da semplicemente impossibile visualizzare la pagina...
    Scusa ma.. stai tentando di redirigere il client ad un file su disco C: ... non penso sia proprio quello che tu vuoi fare... (e cmq... come fai??)

    Se vuoi prendere un file PDF da una cartella diversa da quella dove sta il sito (parlo di percorso fisico su disco) hai 2 strade:
    1) aggiungi una cartella virtuale al sito sotto IIS che punta alla cartella dei PDF e richiami quest'ultima come se fosse una cartella reale presente nel tuo sito
    2) prelevi il file via codice, lo memorizzi in uno stream e lo passi al client tramite Response.BinaryWrite


  6. #6
    Se ti puo' aiutare io faccio cosi pero' occhio a file di grosse dimensioni, questo modo impegna la ram del sistema.
    codice:
    if(File.Exists(PathCompleto) == true)
    {
    System.Byte[] m_byteFile = utility.DownloadFile(PathCompleto);
    
    // estraggo il nome file dal Path completo
    				
    string NomeFile = PathCompleto.Substring(PathCompleto.LastIndexOf(@"\")+ 1);
    //Clear del contesto
    HttpContext.Current.Response.Clear();
    				
    //Imposto l'header
    HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + NomeFile);
    HttpContext.Current.Response.AddHeader("Pragma", "public");
    HttpContext.Current.Response.AddHeader("Cache-Control","max-age=0");
    HttpContext.Current.Response.AddHeader("Content-Length", m_byteFile.Length.ToString());
    HttpContext.Current.Response.ContentType = "application/save; name= NomeFile";
    
    //Scrittura dei Byte
    HttpContext.Current.Response.BinaryWrite(m_byteFile);					
    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.End();
    }

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.