Controllare se esiste il file (querystring)

sabato 11 luglio 2009 - 20.50

Anonimo Profilo | Senior Member

Salve, mi dite come faccio ad controllare se esiste il file ?

questo è il codice:
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Configuration; using System.Data.Odbc; using System.Data; using System.IO; public partial class page_read : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) popola(); } private void popola() { string basePath = ""; string myPath = Request.QueryString["page"]; string filePath = string.Concat(basePath, myPath); if (!String.IsNullOrEmpty(filePath)) { if (myPath.IndexOfAny(Path.GetInvalidFileNameChars()) > -1) throw new FileNotFoundException("FileName not valid"); if (!filePath.StartsWith(basePath)) throw new FileNotFoundException("Path not valid"); StreamReader sr = new StreamReader(Server.MapPath("/public/pagine/") + filePath + ""); while (!sr.EndOfStream) { vipage.InnerHtml += sr.ReadLine().ToString() + '\r' + '\n'; } sr.Close(); } else { vipage.InnerHtml = "Non c'è niente"; } } }

quando faccio cosi page_read.aspx?page=d
essendo d non è un file mi da errore qua:

Errore server nell'applicazione '/'.
Impossibile trovare il file 'D:\wwwroot\www\public\pagine\d'.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.IO.FileNotFoundException: Impossibile trovare il file 'D:\wwwroot\www\public\pagine\d'.

Errore nel codice sorgente:

Riga 36: if (!filePath.StartsWith(basePath))
Riga 37: throw new FileNotFoundException("Path not valid");
Riga 38: StreamReader sr = new StreamReader(Server.MapPath("/public/pagine/") + filePath + "");
Riga 39: while (!sr.EndOfStream)
Riga 40: {

Mi dite come fare?.
grazie mille.

alx_81 Profilo | Guru

>Salve,
ciao

> mi dite come faccio ad controllare se esiste il file ?
Usa il namespace System.IO e nella fattispecie, l'oggetto File.

System.IO Namespace
http://msdn.microsoft.com/en-us/library/system.io.aspx

System.IO.File
http://msdn.microsoft.com/en-us/library/system.io.file.aspx
La classe File ha dei metodi statici che ti consentono di eseguire il controllo che ti serve (File.Exists, http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx).

Per creare un path poi, non usare la String.Concat, ma la Path.Combine, che gestisce già il controllo della validità formale di un path.
http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspx

>grazie mille.
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Anonimo Profilo | Senior Member

ok, mi protesti fare un esempio completo se hai tempo.....

grazie... perchè io non sto capendo più un tubo ,

perchè prima mi dicono di usare quello e poi ora mi dici di usare combine.path.

Che devo usa?

grazie.!

alx_81 Profilo | Guru

>ok, mi protesti fare un esempio completo se hai tempo.....
guarda, è tutto nella documentazione:
http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx

Qui troverai l'esempio per la EXISTS. Basta cambiare il percorso con quello del tuo file

>perchè prima mi dicono di usare quello e poi ora mi dici di usare combine.path.
Non so chi ti ha detto di usare il concat, ma il Path.Combine fa proprio l'unione di due path:
http://msdn.microsoft.com/it-it/library/fyy7a5kt(VS.80).aspx

anche qui c'è un esempio esauriente.
ciao!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5