public WrappedJsonResult ImportLanguage(string languageCulture, HttpPostedFileBase file) { using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork()) { var report = new CsvReport(); //http://www.dustinhorne.com/post/2011/11/16/AJAX-File-Uploads-with-jQuery-and-MVC-3.aspx try { // Verify that the user selected a file if (file != null && file.ContentLength > 0) { // Unpack the data var allLines = new List <string>(); using (var streamReader = new StreamReader(file.InputStream, System.Text.Encoding.UTF8, true)) { while (streamReader.Peek() >= 0) { allLines.Add(streamReader.ReadLine()); } } // Read the CSV file and generate a language report = LocalizationService.FromCsv(languageCulture, allLines); unitOfWork.Commit(); } else { report.Errors.Add(new CsvErrorWarning { ErrorWarningType = CsvErrorWarningType.BadDataFormat, Message = "File does not contain a language." }); } } catch (Exception ex) { unitOfWork.Rollback(); report.Errors.Add(new CsvErrorWarning { ErrorWarningType = CsvErrorWarningType.GeneralError, Message = string.Format("Unable to import language: {0}", ex.Message) }); } return(new WrappedJsonResult { Data = ToJSON(report) }); } }