Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di biocco
    Registrato dal
    Sep 2003
    Messaggi
    486

    aprire file esterni alla wwwroot

    No non funziona questo metodo.

    Per scopi di sicurezza mi è stato richiesto di mettere i file in modo che nessun utente possa vederli.
    quindi ho creato una cartella esterna a quella visualizzabile dal sito

    cartella pubblica
    c:\inetpub\wwwroot\html.it\

    cartela privata
    c:\inetpub\wwwroot\

    il problema e che devo visualizzare agli utenti alcuni file nella cartella privata e devo aprirli e visualizzarli come se fossero dei normalissimi link.

    sono file pdf.

    non ce un codice vb.net o asp.net che mi permetta di fare questo?

  2. #2
    con link assoluti ci dovresti riuscire

  3. #3
    Utente di HTML.it L'avatar di biocco
    Registrato dal
    Sep 2003
    Messaggi
    486
    ma devo aprirli dal browser come faccio ad aprirlo con un link assoluto scusa?

  4. #4
    Se il percorso dove sono i file è fuori dal sito l'unico modo è leggere uno stream da disco andando a puntarlo direttamente,
    in C# una cosa del genere:
    Questo metodo ritorna un'array di byte che sono il contenuto del file.
    Come vedi al metodo devi passare il percorso completo del file da leggere (quindi d:\path\file.pdf per esempio)

    codice:
    		//Metodo che permette di effettuare il download
    		public static byte[] DownloadFile(System.String m_strFilePath) 
    		{
    
    			//Dichiarazione membri interni
    			System.Byte[] m_byteFile = null;
    			System.IO.FileStream m_StaticFileStream = null;
    			
    			try 
    			{
    				//Recupero i byte del file leggendolo da uno stream
    				m_StaticFileStream = new FileStream(m_strFilePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
    				m_byteFile = new byte[m_StaticFileStream.Length];
    				m_StaticFileStream.Read(m_byteFile, 0, m_byteFile.Length);
    				m_StaticFileStream.Close();
    
    				//Chiamo le funzionalità per forzare il download
    				if (m_byteFile.Length > 0) 
    				{
    					return m_byteFile;
    				} 
    				else 
    				{
    					//Rilancio eccezione
    					throw new Exception("File non trovato.");
    				}
    
    			} 
    			catch 
    			{
    				//Rilancio eccezione
    				throw;
    			}
    			finally 
    			{
    				//Stacco oggetto
    				m_StaticFileStream = null;
    			}
    		}

    Queti byte li devi leggere da una pagina apposita tipo download.aspx a cui passerai i riferimenti del file.
    In questa pagina dovrai forzare gli header http per fare il download

    codice:
    					//Recupero i dati per il download
    					m_byteFile = Global.Common.FileSystem.FileOperation.DownloadFile(this.FilePath);
    
    					//Clear del contesto
    					HttpContext.Current.Response.Clear();
    				
    					//Imposto l'header
    					HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename="+this.FileName.ToString());
    					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=" + this.FileName;
    
    					//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.