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