如何将文件从 URL 下载到服务器文件夹

Cos*_*gic 4 c# asp.net-core razor-pages

我正在开发 ASP.NET Core Web 应用程序,并且正在使用 Razor Pages。

我的应用程序中显示了一些 URL,当我单击其中一个 URL 时,我想将与该 URL 对应的文件下载到存储应用程序的服务器上的文件夹中,而不是客户端上。

这很重要,因为该文件需要由其他一些第三方应用程序在服务器端进行处理。

URL 以及其他元数据来自数据库,我创建了一个数据库上下文来加载它们。我制作了一个 CSS HTML 文件并以表单形式显示信息。当我单击按钮时,我将 URL 发布到方法处理程序。

我在方法中收到 URL,但我不知道如何在服务器上下载该文件,而不先在客户端上下载它,然后将其保存/上传到服务器。我怎样才能实现这个目标?

gld*_*ael 9

从 .NET 6 开始WebRequestWebClientServicePoint已被弃用

要使用推荐的下载文件HttpClient,您可以执行以下操作:

// using System.Net.Http;
// using System.IO;

var httpClient = new HttpClient();
var responseStream = await httpClient.GetStreamAsync(requestUrl);
using var fileStream = new FileStream(localFilePath, FileMode.Create);
responseStream.CopyTo(fileStream);
Run Code Online (Sandbox Code Playgroud)

请记住不要使用using,并且不要HttpClient在每次使用后处置实例。更多上下文请参见此处此处

获取实例的推荐方法HttpClient从 获取它IHttpClientFactory。如果您HttpClient使用 a 获取实例HttpClientFactory,则可以HttpClient在每次使用后处置该实例。