2011-02-25 6 views
4

Voici mon contrôleur:Comment sauvegarder un fichier sur le disque?

[HttpPost] 
    public ActionResult Index(HttpPostedFileBase excelFile) 
    { 

     /*Somewhere here, I have to save the uploaded file.*/ 

     var fileName = string.Format("{0}\\{1}", Directory.GetCurrentDirectory(), excelFile.FileName); 
     var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName); 

     var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString); 
     var ds = new DataSet(); 
     adapter.Fill(ds, "results"); 

     DataTable data = ds.Tables["results"]; 

     return View(); 
    } 
+1

Pourriez-vous peut-être élaborer? –

+0

Qu'est-ce que vous essayez d'enregistrer sur le disque? – RQDQ

+0

excelFile est le fichier téléchargé sur le site Web. Un fichier .xlsx. J'ai besoin de sauvegarder ce fichier en permanence sur le disque dur. Je suppose en utilisant la propriété .InputStream? Mais je suis confus quant à la façon de faire cela. –

Répondre

11

Ceci est une façon de le gérer si vous recevez des fichiers téléchargés.

string nameAndLocation = "~/UploadedFiles/" + hpf.FileName; 
hpf.SaveAs(Server.MapPath(nameAndLocation)); 
+0

Je pense qu'il demandait de sauver spécifiquement excelFile. – RQDQ

+0

Merci, cela a aidé un peu. :) –

5

Avez-vous essayé HttpPostedFileBase.SaveAs méthode?

+0

Je n'ai pas vu cette méthode. :) Juste une question, où cela enregistre-t-il le fichier si je lui donne seulement un nom de fichier à utiliser? –

+0

@Sergio - voir mon code ci-dessous. –

+0

Si seul le nom de fichier est spécifié, le répertoire en cours sera utilisé comme emplacement du fichier. Et vous pouvez préférer utiliser Directory.GetCurrentDirectory, mais Server.MapPath pour mapper un chemin relatif dans votre site Web vers un chemin physique. Par exemple, Server.MapPath (@ "~/ExcelFiles/data.xls") –

Questions connexes