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

Posted

技术标签:

【中文标题】如何将文件从 URL 下载到服务器文件夹【英文标题】:How to download a file from an URL to a server folder 【发布时间】:2021-10-12 02:04:47 【问题描述】:

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

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

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

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

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

【问题讨论】:

贴出你的代码 只是一个接收url参数的OnPost方法。我不知道如何从服务器而不是客户端上的该 url 下载文件。我试着弄乱 HttpWebRequest 但我没有设法做我想做的事。 我确信 SO 充满了“我如何在 c# 中下载文件”的帖子,您可以试试看。我会忽略“它在服务器上”部分开始......只需让控制台应用程序下载工作然后移植代码 “它在服务器上”部分是最重要的部分。如果我在本地机器上使用它,该应用程序可以正常工作,但我打算从手机上使用它,我需要在服务器上下载文件,而不是在我的手机上 我在哪里告诉您要在手机上下载文件?你有什么手机可以运行 c#? 【参考方案1】:

可以使用 System.Net.WebClient

using (WebClient Client = new WebClient ())

    Client.DownloadFile (
            // Param1 = Link of file
            new System.Uri("Given URL"),
            // Param2 = Path to save
            "On SERVER PATH"
        );

【讨论】:

这工作正常,但我使用了 DownloadFileAsync..无论哪种方式..似乎完成了工作..非常感谢! :)【参考方案2】:

启动 .NET 6 WebRequestWebClientServicePoint 类 are deprecated。

要使用推荐的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);

切记不要使用using,并且不要在每次使用后丢弃HttpClient 实例。更多上下文 here 和 here。

获取HttpClient 实例的recommended way 是从IHttpClientFactory 获取它。如果您使用HttpClientFactory 获得HttpClient 实例,则可以在每次使用后处置HttpClient 实例。

【讨论】:

以上是关于如何将文件从 URL 下载到服务器文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何将媒体文件的 URL 限制为 Django 中未经身份验证的用户?

如何从 FTP 下载文件并使用 PHP 将其流式传输到客户端

将网站源下载到文件夹的脚本

从服务器一个一个下载文件

如何从 URL 读取 Windows 应用程序中的大量 xml 文件(从 Windows 应用程序到服务器的多个请求)c#

JavaScript - 将图像从 URL 保存到本地机器特定路径?