循环通过 FileUpload 控件上传的 txt 文件行

Posted

技术标签:

【中文标题】循环通过 FileUpload 控件上传的 txt 文件行【英文标题】:Looping through lines of txt file uploaded via FileUpload control 【发布时间】:2011-11-01 06:35:42 【问题描述】:

我想使用 FileUpload 控件选择一个包含字符串行的简单 .txt 文件。但我不想实际保存文件,而是要遍历每一行文本并在 ListBox 控件中显示每一行。

文本文件示例:

test.txt

123jhg345182bdh774473ypo433129iiu454

最好的方法是什么?

到目前为止我所拥有的:

private void populateListBox()

  FileUpload fu = FileUpload1;

  if (fu.HasFile)
  
    //Loop trough txt file and add lines to ListBox1
   
 

【问题讨论】:

【参考方案1】:
private void populateListBox() 

    FileUpload fu = FileUpload1; 
    if (fu.HasFile)  
    
        StreamReader reader = new StreamReader(fu.FileContent);
        do
        
            string textLine = reader.ReadLine();

            // do your coding 
            //Loop trough txt file and add lines to ListBox1  

         while (reader.Peek() != -1);
        reader.Close();
    

【讨论】:

感谢 Shalini,这就是我想要的。请注意,流阅读器需要这样初始化:StreamReader reader = new StreamReader(fu.PostedFile.InputStream);【参考方案2】:

这是一个工作示例:

using (var file = new System.IO.StreamReader("c:\\test.txt"))

    string line;
    while ((line = file.ReadLine()) != null)
    
        // do something awesome
    

【讨论】:

【参考方案3】:

将文件打开到StreamReader 并使用


while(!reader.EndOfStream) 
 
   reader.ReadLine; 
   // do your stuff 

如果您想知道如何将文件/日期放入流中,请说明您以什么形式获得文件(s 字节)

【讨论】:

【参考方案4】:

有几种不同的方法可以做到这一点,以上是很好的例子。

string line;
string filePath = "c:\\test.txt";

if (File.Exists(filePath))

   // Read the file and display it line by line.
   StreamReader file = new StreamReader(filePath);
   while ((line = file.ReadLine()) != null)
   
     listBox1.Add(line);
   
     file.Close();

【讨论】:

【参考方案5】:

还有这个,在 MVC 中使用 HttpPostedFileBase:

[HttpPost]
public ActionResult UploadFile(HttpPostedFileBase file)
    
    if (file != null && file.ContentLength > 0)
    
          //var fileName = Path.GetFileName(file.FileName);
          //var path = Path.Combine(directory.ToString(), fileName);
          //file.SaveAs(path);
          var streamfile = new StreamReader(file.InputStream);
          var streamline = string.Empty;
          var counter = 1;
          var createddate = DateTime.Now;
          try
          
               while ((streamline = streamfile.ReadLine()) != null)
               
                    //do whatever;//

【讨论】:

【参考方案6】:
private void populateListBox()
            
    List<string> tempListRecords = new List<string>();

    if (!FileUpload1.HasFile)
    
        return;
    
    using (StreamReader tempReader = new StreamReader(FileUpload1.FileContent))
    
        string tempLine = string.Empty;
        while ((tempLine = tempReader.ReadLine()) != null)
        
            // GET - line
            tempListRecords.Add(tempLine);
            // or do your coding.... 
        
    

【讨论】:

以上是关于循环通过 FileUpload 控件上传的 txt 文件行的主要内容,如果未能解决你的问题,请参考以下文章

完成FileUpload的文件上传功能,且可改按钮样式

webform文件的上传

用fileupload控件上传文件怎样使上传的文件显示在指定的位置

用FileUpload控件怎么实现多图片上传

jQuery fileupload 多文件上传

文件上传,图片加水印