C# 文件应保存到客户端桌面,而不是保存到服务器桌面

C# 文件应保存到客户端桌面,而不是保存到服务器桌面,c#,asp.net,download,path,environment-variables,C#,Asp.net,Download,Path,Environment Variables,我有一个应用程序,允许用户上传和下载文件到服务器。当我单击“下载”时,这个过程是有效的,但是,它将它保存到了错误的位置。当用户单击下载时,我希望它将文件保存到用户桌面,但是,当用户单击下载时,它将文件保存到服务器的桌面文件夹中,该文件夹必须由应用程序以应用程序名称创建 总而言之:我想保存到客户端的桌面上。而是将其保存到以下位置的服务器: C:\Users\RHAField\Desktop (RHAField是应用程序名) 这是我下载文件的代码 这里我声明位置,然后调用StartDownload方

我有一个应用程序,允许用户上传和下载文件到服务器。当我单击“下载”时,这个过程是有效的,但是,它将它保存到了错误的位置。当用户单击下载时,我希望它将文件保存到用户桌面,但是,当用户单击下载时,它将文件保存到服务器的桌面文件夹中,该文件夹必须由应用程序以应用程序名称创建

总而言之:我想保存到客户端的桌面上。而是将其保存到以下位置的服务器:

C:\Users\RHAField\Desktop

RHAField是应用程序名

这是我下载文件的代码

这里我声明位置,然后调用StartDownload方法。VisitFile根据下载按钮的ID从数据库中检索,然后与路径组合

string DownloadLocation = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "visits\\download\\");
string SaveLocation = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); 
VisitFile = (string)SQLCommand.ExecuteScalar();
StartDownload(Path.Combine(DownloadLocation, VisitFile), Path.Combine(SaveLocation, VisitFile));
StartDownload()方法:


如何将其正确保存到客户端桌面而不是服务器?我的保存位置路径有问题吗?除了SpecialFolder.DesktopDirectory之外,还有更好的方法获取路径吗?

web应用程序无法写入客户端的文件系统。(想象一个世界,你访问的任何网站都可以访问你的文件系统。)web应用程序需要将文件返回给客户端以响应请求。这样做的最佳方式是什么?他们已经需要按下下载按钮了,有没有其他的处理方法?当他们“按下下载按钮”时,他们大概是在向web应用程序发出请求,对吗?然后,对该请求的响应应该是他们想要下载的文件。在ASP.NET中查找如何返回文件(使用您可能使用的任何框架)。网上有很多例子。问题中的代码甚至没有真正显示一开始是如何接收请求的。我正在生成一个工作线程来进行下载,这样我就可以在进度条上跟踪并向用户显示进度。如果我返回文件,是否可以继续这样做?是的,但它会稍微改变用户体验。当前按钮将启动将文件从远程资源提取到服务器的过程。一旦跟踪的进度完成,文件现在“准备好下载”,另一个按钮将显示给用户下载它。在这两个操作之间,您可以将文件保存到服务器上的临时位置。当按下第二个按钮时,只需将该文件返回到客户端。
private void StartDownload(string DownloadSource, string SaveLocation)
    {
        try
        {
            Thread thread = new Thread(() =>
            {
                WebClient client = new WebClient();
                client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
                client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
                client.DownloadFileAsync(new Uri(DownloadSource), SaveLocation);
            });
            thread.Name = "aFieldDownload";
            thread.Start();
        }
        catch (Exception err)
        {
            DownloadPercent = 999;
        }
    }