Salva la finestra di dialogo per scaricare il file, Salvataggio del file dal server ASP.NET al client

Ho cercato su Internet, ma non ho trovato nessuna risposta utile.

Ho un sito Web ASP.NET, che viene 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.

Potresti fornirmi qualche soluzione o risolvere il problema?

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

Lo post qui, potrebbe aiutare qualcun altro 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(); 

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

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

Ecco uno da codeproject:

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

Ottieni il contenuto del file in byte [] dall’unità W e scrivilo nel file locale.

 byte[] data = File.ReadAllBytes(WDriveFilePath) FileStream file = File.Create(HttpContext.Current.Server.MapPath(MyLocalFile)); file.Write(data, 0, data.Length); file.Close(); 

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