The following will create an upload form on an MVC .NET view page and create the controller action to read the uploaded file line by line. This code is expecting a csv file.
//form on page
<h1>Upload a CSV File</h1>
@using (Html.BeginForm("uploadfile", "home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div>
<input type="file" name="files" />
<input type="submit" value="Upload" />
</div>
}
//controller and action to handle the upload
[HttpPost]
public ActionResult UploadFile()
{
//open file
if (Request.Files.Count == 1)
{
//get file
var postedFile = Request.Files[0];
if (postedFile.ContentLength > 0)
{
//read data from input stream
using (var csvReader = new System.IO.StreamReader(postedFile.InputStream))
{
string inputLine = "";
//read each line
while ((inputLine = csvReader.ReadLine()) != null)
{
//get lines values
string[] values = inputLine.Split(new char[] { ',' });
for (int x = 0; x < values.Length; x++)
{
//do something with each line and split value
}
}
csvReader.Close();
}
}
}
return Redirect("/home/uploadfilepage");
}