209 messaggi dal 23 agosto 2007
Salve,

Utilizzo un HtmlInputControl per eseguire l'upload di un file sul server:
uploadedFile.SaveAs("\\images\\filename");

Il file viene salvato correttamente sul server e il path viene anche salvato nel DB.

Il problema è che usando backslash per il path il file non viene poi aperto/visualizzato quando letto dal DB. Se uso "/" invece (/images/filename), il file viene aperto e correttamente applicato, ma così poi il file non viene salvato sul server al momento dell'upload.

Quale è il corretto formato del path da utilizzare in modo che sia valido sia per il DB che per salvare fisicamente il file?

Grazie
Perchè non usare un semplice controllo FileUpload? io lo uso e riesco ad usarlo per entrambi i casi di cui tu hai bisogno...

Creazione Siti Vicenza
Posizionamento Siti - SEO
209 messaggi dal 23 agosto 2007
Ciao Ricardo,

uso anche io un FileUpload. Ti posto il codice per spiegare meglio:
 
protected HtmlInputFile fileUploader = new HtmlInputFile(); 
protected Button uploadButton = new Button(); 
protected CustomValidator validator = new CustomValidator(); 
 
 
 uploadButton.Text = "Upload"; 
uploadButton.ID = "Upload"; 
uploadButton.Click += new EventHandler(uploadButton_Click); 
 
 
string FilePath = ""\\Portals\\1\\Images\\" + HttpContext.Current.Request.Files[0].FileName; 
 
 public void uploadButton_Click(object sender, EventArgs e) 
{ 
if (HttpContext.Current.Request.Files.Count > 0 && validator.IsValid)  
  { 
HttpPostedFile uploadedFile = HttpContext.Current.Request.Files[0]; 
 
if (this.Page is BasePage) 
{ 
FilePath = destinationFolderPath + ((BasePage)this.Page).TemplateProcessor.Translate(this.fileNameTemplate); 
} 
else 
{ 
TemplateProcessor tp = new TemplateProcessor(); 
FilePath = destinationFolderPath + tp.Translate(this.fileNameTemplate); 
}   
          uploadedFile.SaveAs(System.Web.HttpContext.Current.Server.MapPath(FilePath)); 
} 
} 

Modificato da paquito_ita il 12 giugno 2009 22.14 -
20 messaggi dal 25 aprile 2009
Se davanti ad una stringa costante gli metti il carattere @(la chiocciola) gli dici a c# di considerare quella stringa cosi com'è senza tenere conto dei caratteri speciali \t \n \\ ecc.
In questo caso la tua path la cambi cosi
string FilePath = @"\Portals\1\Images\" + HttpContext.Current.Request.Files[0].FileName;  

salvi la path in modo pulito nel DB senza i doppi '\\' e funziona anche l'upload.

non ho provato ma dovrebbe essere cosi.
209 messaggi dal 23 agosto 2007
Alla fine ho risolto utilizzando semplicemente:
string FilePath = "/Portals/1/Images/" + HttpContext.Current.Request.Files[0].FileName; 

uploadedFile.SaveAs(System.Web.HttpContext.Current.Server.MapPath(FilePath)); 


Datro che ho visto (tramite ulteriore debugging) che Server.MapPath accetta anche "/" e li tramuta in un path fisico con "\\".

Grazie comunque per il suggerimento!!

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.