保存对话框以下载文件,将文件从ASP.NET服务器保存到客户端

我一直在网上搜索,但找不到任何有用的答案。

我有一个ASP.NET网站,它部署在服务器上。 服务器上的ASP.NET网站可以访问名为W:/的目录。 公司的客户可以访问该网站。 该网站在ListBox中列出W:/目录中的所有PDF文件。 客户端应该能够从列表框中选择PDF文件,并通过为其选择位置将其保存到本地PC。

像在网页上保存为文件的东西。

你能给我一些解决方案或解决方法吗?

最后我发现了一篇文章,它提示了一个从ASP.NET下载文件的保存对话框

我在这里发布,也可以帮助其他人并节省一些时间。

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

这是user1734609在本地获取文件的解决方案的扩展。

要从服务器下载文件到客户端:

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

正确的关键字是“文件浏览器asp.net”,找到很多带源代码的例子。

这是codeproject中的一个:

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

从W驱动器获取byte []中的文件内容并将其写入本地文件。

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

我做了类似这样的事情来获取文件。

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