2012-10-11 3 views
5

Ich habe im Internet gesucht, konnte aber keine sinnvolle Antwort finden.Speichern Sie das Dialogfeld zum Herunterladen der Datei, Speichern der Datei von ASP.NET-Server auf den Client

Ich habe eine ASP.NET-Website, die auf dem Server bereitgestellt wird. Die ASP.NET-Website auf dem Server kann auf ein Verzeichnis namens W:/zugreifen. Die Kunden im Unternehmen können auf die Website zugreifen. Die Website listet in einer ListBox alle PDF-Dateien aus dem Verzeichnis W:/auf. Der Client sollte in der Lage sein, PDF-Dateien aus der Listbox auszuwählen und sie auf seinem lokalen PC zu speichern, indem er einen Speicherort dafür auswählt.

So etwas wie Speichern als Datei auf Webseiten.

Können Sie mir eine Lösung zur Verfügung stellen oder umgehen?

Antwort

0

Die richtigen Schlüsselwörter sind "Datei-Browser asp.net", um viele Beispiele mit Quellcode zu finden.

Hier ist einer von Codeproject:

http://www.codeproject.com/Articles/301328/ASP-NETUser-Control-File-Browser

+0

Danke @Aristos! – user1734609

+0

@ user1734609 ist das was du suchst? :) – Aristos

+0

Ich habe den Artikel durchgelesen, aber nicht genau :) Ich habe PDF-Dateinamen in einer ListBox. Die Dateien aus dem Verzeichnis W:/befinden sich auf einem anderen Server, aber innerhalb der Domäne. Die Listbox listet alle Dateinamen dieses Verzeichnisses auf. Der Kunde innerhalb der Firma, wenn er die Web site öffnet, kann die Liste der PDF-Dateien vom Verzeichnis erhalten. Wählen Sie dann eine oder mehrere und klicken Sie auf Speichern unter. Und sollte in der Lage sein, auf seinem eigenen PC zu sparen :) Verstehst du den Punkt? :) – user1734609

0

Get Dateiinhalt in byte [] von W-Laufwerk und schreiben Sie es auf lokale Datei.

byte[] data = File.ReadAllBytes(WDriveFilePath) 

FileStream file = File.Create(HttpContext.Current.Server.MapPath(MyLocalFile)); 

file.Write(data, 0, data.Length); 
file.Close(); 
+0

Dies bietet keinen sicheren Dialog. – bgmCoder

4

Endlich habe ich einen Artikel gefunden, der ein Dialogfeld Speicher Fordert eine Datei von ASP.NET

ich es hier posten zu downloaden, könnte jemand anderes auch helfen und Zeit sparen.

String FileName = "FileName.txt"; 
String FilePath = "C:/...."; //Replace this 
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
response.ClearContent(); 
response.Clear(); 
response.ContentType = "text/plain"; 
response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";"); 
response.TransmitFile(FilePath); 
response.Flush(); 
response.End(); 
+1

Danke für Cory Mathews für seinen Artikel. – user1734609

+0

Funktioniert es zum Herunterladen von .zip-Dateien? Welcher ContentType sollte dafür verwendet werden? – alegz

-1

Ich habe so etwas getan, um die Datei zu erhalten.

protected void btnExportFile_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       Thread newThread = new Thread(new ThreadStart(ThreadMethod)); 
       newThread.SetApartmentState(ApartmentState.STA); 
       newThread.Start();  

       // try using threads as you will get a Current thread must be set to single thread apartment (STA) mode before OLE Exception . 


      } 
      catch (Exception ex) 
      { 

      } 

     } 

     static void ThreadMethod() 
     { 
      Stream myStream; 
      SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
      saveFileDialog1.FilterIndex = 2; 
      saveFileDialog1.RestoreDirectory = true; 

      if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
      { 
       if ((myStream = saveFileDialog1.OpenFile()) != null) 
       { 
        // Code to write the stream goes here. 
        myStream.Close(); 
       } 
      } 
     } 
1

Dies ist eine Erweiterung der Lösung von user1734609, die eine Datei lokal erhält.

Um eine Datei vom Server zum Client herunterladen:

public void DownloadFile() 
     { 
      String FileName = "201604112318571964-sample2.txt"; 
      String FilePath = AppDomain.CurrentDomain.BaseDirectory + "/App_Data/Uploads/" + FileName; 
      System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
      response.ClearContent(); 
      response.Clear(); 
      response.ContentType = "text/plain"; 
      response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";"); 
      response.TransmitFile(FilePath); 
      response.Flush(); 
      response.End(); 


     } 
Verwandte Themen