通过.net core C#controller将文件下载到用户的本地appdata目录

时间:2018-03-09 20:10:57

标签: c# winforms asp.net-core-mvc

我有两个应用程序(一个.net核心Web应用程序和一个Windows窗体应用程序)。我最终需要的是Web应用程序将文件下载到当前Web用户的本地目录,以便winforms应用程序稍后可以在用户没有任何网络连接时读取文件。 / p>

如果我只通过C#控制器进行标准下载,则默认情况下,用户的下载文件夹默认为下载位置。我希望能够选择特定的文件路径(作为用户的本地appdata目录)。

我以为我可以让网络应用程序将文件下载到当前用户的本地appdata目录,然后winforms应用程序可以自然地从同一个地方访问文件。但是,我现在意识到通过

获取本地appdata direcotry路径
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

返回网络服务器上的本地appdata,而不是客户端本地appdata目录。

有没有办法通过.net网络应用程序将文件下载到当前用户的本地appdata目录?

1 个答案:

答案 0 :(得分:0)

我认为您可能会对此方案中Web服务器的工作感到困惑。

What I need in the end is for the web app to download files to the current web user's local directory so that the winforms app can then later read the files while the user doesn't have any network connection.

你不能这样做;至少需要首先从客户端创建与服务器的连接。相反,客户端应用程序可以调用Web服务器并请求文件并将其放在客户端应用程序所需的任何位置。您可以直接下载位并将其保存在用户有权访问的任何位置,但可以从win forms app。

If I have just a standard download through my C# controller, the user's download folder is obviously chosen by default as the download location.

这是什么意思?您是否向用户显示了一个选择文件位置的对话框?如果是这样,您可以跳过它,只保存在您想要的位置。文件选择器的重点是,用户可以选择保存位置和名称。好像你不想那样。

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

在服务器上执行这样的代码完全符合您的预期;返回服务器的信息。服务器知道要保存的客户端应用程序上的路径是没有意义的。客户端可以只下载这些位并保存在哪里。

缺点是将文件推送到您的计算机上不是网络服务器的工作。请求文件并保存文件是客户端应用程序的工作。如果你想要保存的默认位置(例如,用户目录)没问题,或者你可以显示文件选择器或其他什么。