2012-10-11 10 views
5

Ho cercato su Internet, ma non ho trovato nessuna risposta utile.Salvare la finestra di dialogo per scaricare il file, Salvare il file dal server ASP.NET al client

Ho un sito Web ASP.NET, che è distribuito sul server. Il sito Web ASP.NET sul server può accedere a una directory denominata W: /. I clienti dell'azienda possono accedere al sito web. Il sito web elenca in un ListBox tutti i file PDF dalla directory W: /. Il client dovrebbe essere in grado di selezionare i file PDF dalla casella di riepilogo e salvarli sul PC locale selezionando una posizione per esso.

Qualcosa come salvare come file su pagine web.

Potrebbe fornirmi qualche soluzione o aggirare?

risposta

0

Le parole chiave corrette sono "File Browser asp.net" per trovare molti esempi con codice sorgente.

Qui è uno da CodeProject:

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

+0

Grazie @Aristos! – user1734609

+0

@ user1734609 è questo che cerchi? :) – Aristos

+0

Ho finito di leggere l'articolo, ma non esattamente :) Ho nomi di file PDF in un ListBox. I file dalla directory W:/sono su un server diverso, ma all'interno del dominio. La listbox elenca tutti i nomi di file di quella directory. Il client all'interno dell'azienda quando apre il sito Web può ottenere l'elenco dei file PDF dalla directory. Quindi seleziona uno o più e clicca su Salva come. E dovrebbe essere in grado di salvare sul proprio PC :) Capisci il punto? :) – user1734609

0

contenuto del file mettersi in byte [] dal disco W e lo scrive in un file locale.

byte[] data = File.ReadAllBytes(WDriveFilePath) 

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

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

Questo non fornisce un dialogo di salvataggio. – bgmCoder

4

Finalmente ho trovato un articolo, che spinge una finestra di dialogo Salva per scaricare un file da ASP.NET

ho posto qui, potrebbe aiutare qualcun altro come bene e risparmiare un po 'di tempo.

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

Grazie per Cory Mathews per il suo articolo. – user1734609

+0

Funzionerebbe per il download di file .zip? Che tipo di contenuto deve essere usato per quello? – alegz

-1

Ho fatto qualcosa del genere per ottenere il file.

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

Questa è un'estensione della soluzione dell'utente1734609 che ottiene un file localmente.

Per scaricare un file dal server al client:

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(); 


     }