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

C# “保存”对话框下载文件,将文件从ASP.NET服务器保存到客户端,c#,asp.net,save,save-dialog,C#,Asp.net,Save,Save Dialog,我一直在网上搜索,但找不到任何有用的答案 我有一个ASP.NET网站,它部署在服务器上。 服务器上的ASP.NET网站可以访问名为W:/的目录。 公司的客户可以访问该网站。网站在列表框中列出了W:/目录中的所有PDF文件。客户端应该能够从列表框中选择PDF文件,并通过选择位置将其保存到本地PC 类似于网页上的另存为文件 你能为我提供一些解决方案或解决方法吗?正确的关键字是“文件浏览器asp.net”,以查找大量源代码示例 以下是codeproject中的一个: 正确的关键字是“文件浏览器asp.

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

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

类似于网页上的另存为文件

你能为我提供一些解决方案或解决方法吗?

正确的关键字是“文件浏览器asp.net”,以查找大量源代码示例

以下是codeproject中的一个:

正确的关键字是“文件浏览器asp.net”,以查找大量源代码示例

以下是codeproject中的一个:


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

byte[] data = File.ReadAllBytes(WDriveFilePath)

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

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

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

byte[] data = File.ReadAllBytes(WDriveFilePath)

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

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

最后我找到了一篇文章,它提示保存对话框从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();

最后我找到了一篇文章,它提示保存对话框从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();

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

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

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

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

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


        }

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


        }

@user1734609这就是你要找的吗?:)我读完了这篇文章,但不完全是:)我的列表框中有PDF文件名。来自W:/directory的文件位于不同的服务器上,但位于域内。列表框列出了该目录的所有文件名。公司内部的客户在打开网站时可以从目录中获取PDF文件列表。然后选择一个或多个并单击另存为。并且应该能够在自己的电脑上保存:)你明白这一点吗?:)@是的,我明白。从该代码开始,在选择要向浏览器显示的文件时,从包含所有域的表中进行选择。我不知道如何设置,可能是共享目录,可能是ftp读取,可能是克隆…@user1734609这就是你要找的吗?:)我读完了这篇文章,但不完全是:)我的列表框中有PDF文件名。来自W:/directory的文件位于不同的服务器上,但位于域内。列表框列出了该目录的所有文件名。公司内部的客户在打开网站时可以从目录中获取PDF文件列表。然后选择一个或多个并单击另存为。并且应该能够在自己的电脑上保存:)你明白这一点吗?:)@是的,我明白。从该代码开始,在选择要向浏览器显示的文件时,从包含所有域的表中进行选择。我不知道如何设置,可能是共享目录,可能是ftp读取,可能是克隆…感谢Cory Mathews的文章。下载.zip文件是否有效?应该使用什么内容类型?感谢Cory Mathews的文章。下载.zip文件是否有效?应该使用什么内容类型?这不提供保存对话。这不提供保存对话。