2015-03-24 13 views
6
public ActionResult Import(HttpPostedFileBase currencyConversionsFile) 
    { 

     string filename = "CurrencyConversion Upload_" + DateTime.Now.ToString("dd-MM-yyyy") + ".csv"; 
     string folderPath = Server.MapPath("~/Files/"); 

     string filePath = Server.MapPath("~/Files/" + filename); 
     currencyConversionsFile.SaveAs(filePath); 
     string[] csvData = System.IO.File.ReadAllLines(filePath); 

     //the later code isn't show here 
     } 

Znam zwykły sposób konwertowania pliku httppostedfilebase na ciąg, który będzie najpierw przechowywał plik na serwerze, a następnie odczytuje dane z serwera. Czy mimo to można uzyskać tablicę ciągów bezpośrednio z pliku httppostedfilebez przechowywania pliku na serwerze?Jak przekonwertować httppostedfilebase na String array

Odpowiedz

10

Cóż można odczytać pliku linia po linii z Stream tak:

List<string> csvData = new List<string>(); 
using (System.IO.StreamReader reader = new System.IO.StreamReader(currencyConversionsFile.InputStream)) 
{ 
    while (!reader.EndOfStream) 
    { 
     csvData.Add(reader.ReadLine()); 
    } 
} 
+0

Wielkie dzięki. Działa idealnie. – Gavin

1

Z innego wątku adresowania ten sam problem, ta odpowiedź pomogła mi dostać oddelegowanego plik na sznurku -

https://stackoverflow.com/a/40304761/5333178

zacytować,

string result = string.Empty; 

using (BinaryReader b = new BinaryReader(file.InputStream)) 
{ 
    byte[] binData = b.ReadBytes(file.ContentLength); 
    result = System.Text.Encoding.UTF8.GetString(binData); 
} 

Podział łańcucha na tablicę -

string[] csvData = new string[] { }; 

csvData = result.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None); 
Powiązane problemy