2017-02-13 4 views
1

Ich habe zunächst ein Fileupload-Tool, um eine Textdatei hochzuladen, den Inhalt zu bearbeiten und in einer Listbox oder Textbox anzuzeigen. Die Einschränkung ist jedoch, dass Fileupload nur das einmalige Hochladen unterstützt, zumindest für die Version von .Net Framework, die ich verwende.Mehrere Textdateien nach Klick lesen und anzeigen Inhalt anzeigen

Was ich vorhabe, ist nur ein Button-Steuerelement verwenden und entfernen Sie die Dateiupload. Nach dem Klicken auf die Schaltfläche muss ich die Textdateien in einem bestimmten Ordnerpfad lesen und zuerst den Inhalt eines mehrzeiligen Textfelds anzeigen. (nicht nur der Dateiname) Dies sind meine ursprünglich geschriebenen Codes, und es funktioniert nicht.

protected void btnGetFiles_Click(object sender, EventArgs e) 
     { 
      string content = string.Empty; 
      DirectoryInfo dinfo = new DirectoryInfo(@"C:\samplePath"); 
      FileInfo[] Files = dinfo.GetFiles("*.txt"); 



      foreach (FileInfo file in Files) 
      { 
       //ListBox1.Items.Add(file.Name); 
       content += content; 

      } 
      txtContent.Text = content; 


     } 
+0

Nur ein FYI, die .NET-Framework hat nichts mit mehreren Dateien zu tun hochgeladen werden. Dies ist reiner Client/IIS bei der Arbeit. Um zu sehen, wie man mehrere Datei-Uploads erlaubt, schaut euch [diese SO-Frage] an (http://stackoverflow.com/questions/17441925/how-to-choose-multiple-files-using-file-upload-control) – Icemanind

+0

Weil ich irgendwo rot, dass das Fileupload-Tool eine MultipleUpload-Funktion in der neuesten Version haben kann. Danke, obwohl für die Korrektur – rickyProgrammer

Antwort

1

Da Ihre Webanwendung ist, können Sie nicht auf physische Pfade wie c:\\.. zugreifen, Sie sollten Server.MapPath trotzdem verwenden (Laut Kommentar müssen Sie die Datei nicht mit Server.MapPath abrufen). Dann gilt für den Inhalt bekommen können Sie so etwas wie die folgenden versuchen:

protected void btnGetFiles_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      StringBuilder content = new StringBuilder(); 
      if (Directory.Exists(@"C:\samplePath")) 
      { 
       // Execute this if the directory exists 
       foreach (string file in Directory.GetFiles(@"C:\samplePath","*.txt")) 
       { 
        // Iterates through the files of type txt in the directories 
        content.Append(File.ReadAllText(file)); // gives you the conent 
       } 
       txtContent.Text = content.ToString(); 
      } 
     } 
     catch 
     { 
      txtContent.Text = "Something went wrong"; 
     } 

    } 
+0

eigentlich Herr, ist die Anwendung für den lokalen Einsatz für jetzt, so wird es in Ordnung sein, wenn ich benutze absoluter Pfad. Der aktuelle Code kann den Pfad tatsächlich lokalisieren, das einzige Problem ist nur der Inhalt der Dateien, die nicht gelesen werden. Nur der Dateiname. Wenn ich den Code ausprobiere, erwartet ich, dass ich einen Fehler habe, dass ein virtueller Pfad codiert werden muss. – rickyProgrammer

+0

@rickyProgrammer: ok dann gehe mit '" C: \ samplePath "' anstelle von 'Server.MapPath (" Relative path here ")' und überprüfe, ob es funktioniert; Sehen Sie den aktualisierten Code –

+0

Danke, wenn es mir gefällt, dass es in gridview angezeigt wird? – rickyProgrammer

0

Sie schrieb content += content;, das ist das Problem. ändere es in content += file.Name;, es wird funktionieren.

+0

immer noch keine Ausgabe Sir. – rickyProgrammer

+0

Sorry für die Cofusion, Sie sind richtig dort, aber es zeigt den Dateinamen, Wie kann ich den Inhalt der einzelnen Dateien anzeigen – rickyProgrammer

+0

gibt es ein sehr gutes Beispiel für das Lesen von Text aus. TXT-Dateien in https: // msdn .microsoft.com/de-us/library/db5x7c0d (v = vs.110) .aspx –