在ASP.NET中上载文本文件

时间:2009-05-04 05:49:40

标签: c# asp.net

我有一个网页,用户可以在其上传文本文件(但文本文件,即扩展名为.txt的文件,可以是多种编码,例如ASCII,UTF8,UNICODE等),我是在将文件保存到磁盘之前尝试验证内存中的内容,如果内容无效,我不保存文件。我正在从文件上传控件中读取内容(fileUpload1.FileContent,它返回一个字节流),在.NET中有一种简单的方法可以将上传文件的内容转换为字符串(即从fileUpload1返回的字节流) .FileContent)或者我必须先检查第一个字节来检测编码吗?

由于

2 个答案:

答案 0 :(得分:9)

我认为你可以这样做:

StreamReader reader = new StreamReader(fileUpload1.FileContent);
string text = reader.ReadToEnd(); 

答案 1 :(得分:-2)

Example of text file format

Code#Name#Fathername#DOB#Location#MobileNo
1#XYZ#YYY#09-06-89#LKO#9999999999



     protected void btnUpload_click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                bool logval = true;
                if (logval == true)
                {
                    if (fuUploadExcelName.HasFile)
                    {
                        String img_1 = fuUploadExcelName.PostedFile.FileName;
                        String img_2 = System.IO.Path.GetFileName(img_1);
                        string extn = System.IO.Path.GetExtension(img_1);
                        string frstfilenamepart = "Text" + DateTime.Now.ToString("ddMMyyyyhhmmss");/*Filename for storing in Desired path*/
                        UploadExcelName.Value = frstfilenamepart + extn;
                        fuUploadExcelName.SaveAs(Server.MapPath("~/Text/") + "/" + UploadExcelName.Value);/*Uploaded text file will be store at this path*/

                        string filename = UploadExcelName.Value;
                        string filePath = Server.MapPath("~/Text/" + filename);




                        StreamReader file = new StreamReader(filePath);
                        string[] ColumnNames = file.ReadLine().Split('#');/*read data from textfile*/
                        DataTable dt = new DataTable();
                        foreach (string Column in ColumnNames)
                        {
                            dt.Columns.Add(Column);/*adding the columns/
                        }
                        string NewLine;
                        while ((NewLine = file.ReadLine()) != null)
                        {
                            DataRow dr = dt.NewRow();
                            string[] values = NewLine.Split('#');

                            for (int i = 0; i < values.Length; i++)
                            {
                                dr[i] = values[i].TrimEnd();
                            }
                            dt.Rows.Add(dr);
                        }
                        file.Close();
                        grdview.DataSource = dt;/*make datasouce from text file*
                        grdview.DataBind();/*binding the grid*/


                    }
                }

            }
        }