74 messaggi dal 29 agosto 2009
Salve a tutti,
sto cercando di fare l'upload di un file, e creare una cartella dentro la cartella public...
il tutto lo sto testando sul mio computer..
il primo problema è che mi esce un errore di accesso negato alla cartella: Errore: Accesso al percorso '~/public/1' negato.

Il codice che utilizzo è il seguente:

string activeDir = "~/public/";
                string newPath = System.IO.Path.Combine(activeDir, valore.ToString());
                System.IO.Directory.CreateDirectory(newPath);
                string filePath = Request.PhysicalApplicationPath;
                filePath += "public/";
                filePath += valore.ToString() + "/";
                if (video.HasFile)
                {
                    filePath += video.FileName;
                    if (System.IO.File.Exists(filePath))
                        Response.Text = "Il file non può essere caricato perché già presente sul server!";
                    else
                    {
                        video.SaveAs(filePath);
                        Response.Text = "File caricato!";
                    }
                }



l'ultima parte cioè valore.tostring() in ogni caso è rappresentato da un numero...

ora dato che il tutto è sul mio pc come ho detto... ho la possibilità che lo stesso errore l'avro sul server dove sarà poi il sito??

grazie a tutti
prova a creare il path così:
 
string filePath = System.IO.Path.Combine(Server.MapPath, string.Format("public/{0}", valore)); 

Davide Guida
Developer, Data Manager @ Publicis Healthware
http://davideguida.netne.net
74 messaggi dal 29 agosto 2009
ciao,
allora ho fatto come mi hai indicato modificandolo così perchè dava errore:
string cartella = "~/public/";
                string filePath = System.IO.Path.Combine(cartella, string.Format("{0}", valore + "/"));


solo che ora mi esce questo errore:
 Il metodo SaveAs è configurato per richiedere un percorso contenente una radice, mentre il percorso '~/public/1/Database1.accdb' non contiene una radice.


ovviamente ho provato un file fittizio :p

consigli??
sostituisci
string cartella = "~/public/";
con
string cartella = Server.MapPath("~/public/");


PS:
giusto come nota, ti conviene fare string.Format("{0}/", valore) , così eviti la creazione di una nuova stringa

Davide Guida
Developer, Data Manager @ Publicis Healthware
http://davideguida.netne.net
74 messaggi dal 29 agosto 2009
ciao,
allora ....
sto cambiando da errore ad errore...
dopo i tuoi consigli ora mi esce questo:
Errore: Impossibile trovare una parte del percorso 'E:\Siti Web\sito\public\1\Database1.accdb'. 
hai controllato che il path completo senza il nome del file esista? magari la cartella public/1/ non è stata creata...

Davide Guida
Developer, Data Manager @ Publicis Healthware
http://davideguida.netne.net
74 messaggi dal 29 agosto 2009
ciao,
allora ho verificato e il percorso completo è il seguente:

E:\Siti Web\sito\public\1/

Il problema secondo me è l'ultimo slash (che slash non è) ....
come potrei fare??
il backslash non dovrebbe crearti problemi (se proprio non lo sopporti, puoi semrpe fare uno string.Replace XD ).

ma cos'è che va in eccezione? il metodo Save del FileUpload?
il path che hai indicato esiste? Se si, non è che contiene già un file con lo stesso nome di quello che vuoi salvare?

Davide Guida
Developer, Data Manager @ Publicis Healthware
http://davideguida.netne.net

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.