Загрузка файла, чтение в память и использование в качестве текстового файла - есть ли лучший способ?
У меня есть размещенное в интранете веб-приложение, в котором пользователь будет загружать текстовый файл с разделенными пробелами данными в 5 столбцах. Я не хочу сохранять файл, поэтому я хотел просто использовать его в памяти. Я пробовал много разных примеров в интернете, но ни один из них не работал Наконец сотрудник показал мне, как это сделать. Вот код, и мне интересно, есть ли лучший способ сделать это. В конце концов, все, что мне нужно, - это способ связать данные с сеткой или повторителем для просмотра и последующего хранения в базе данных (SQL Server).
Идентификатор тега asp загружаемого файла - SurveyFileUpload
SurveyDate является полем ввода asp:
Int32 fileLen = SurveyFileUpload.PostedFile.ContentLength;
// Create a byte array to hold the contents of the file.
Byte[] buffer = new Byte[fileLen];
// Initialize the stream to read the uploaded file.
Stream s = SurveyFileUpload.FileContent;
// Read the file into the byte array.
s.Read(buffer, 0, fileLen);
// Convert byte array into characters.
ASCIIEncoding enc = new ASCIIEncoding();
string str = enc.GetString(buffer);
testReadFile(str, db_surveyDate.Text);
protected void testReadFile(string inFileString, string inSurveyDate)
{
string[] lines = inFileString.Split('\n');
curFileListing.InnerHtml = "";
int curRow = 1;
var readings = from line in lines
select new
{
// this is just for display purposes to show the number of rows on the page
Row = curRow++,
SurveyDate = inSurveyDate,
ItemNumber = Regex.Split(line, "[ ]+")[0],
Northing = Regex.Split(line, "[ ]+")[1],
Easting = Regex.Split(line, "[ ]+")[2],
Elevation = Regex.Split(line, "[ ]+")[3],
Name = Regex.Split(line, "[ ]+")[4]
};
saveFileData.Visible = true;
GridView fileData = new GridView();
fileData.DataSource = readings;
fileData.DataBind();
fileData.AlternatingRowStyle.BackColor =
System.Drawing.ColorTranslator.FromHtml("#eee");
curFileListing.Controls.Add(fileData);
}
Это работает хорошо. Я не очень разбираюсь в LINQ, и мне было тяжело с частью файлового потока.