如何将文件从 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 WebRequest
、WebClient
和 ServicePoint
类 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#