Upload de fichier en lecture à la mémoire et à l'utiliser comme fichier de texte est-il une meilleure façon?

J'ai un intranet, application hébergée sur le web où l'utilisateur de télécharger un fichier texte avec un espace délimité par des données en 5 colonnes. Je ne souhaite pas enregistrer le fichier, donc je voulais juste l'utiliser dans la mémoire. J'ai essayé de nombreux exemples sur le web et aucun n'a fonctionné. Enfin, un collègue m'a montré comment faire. Voici le code, et je me demande si il y a une meilleure façon de le faire. En fin de compte, tout ce que je veux, c'est un moyen de relier les données à un contrôle gridview ou d'un répétiteur pour la visualisation et la plus tard de stockage dans une base de données (SQL Server).

Le téléchargement de fichiers asp ID tag est SurveyFileUpload

Le SurveyDate est un asp:champ de saisie

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);
}

Cela fonctionne OK. Je ne suis pas bien informé avec LINQ et j'ai eu un moment difficile avec le flux de fichier de la partie.

InformationsquelleAutor Polo Herrera | 2009-11-25