HttpClient.PostAsync 用于上传文件

Posted

技术标签:

【中文标题】HttpClient.PostAsync 用于上传文件【英文标题】:HttpClient.PostAsync for uploading files 【发布时间】:2020-09-23 14:43:00 【问题描述】:

我正在开发一个 API,它需要从服务器 A 下载文件并将其上传到同一网络中的服务器 B。它是供内部使用的。每个文件都有多个版本,需要多次上传到服务器 B,并且同一文件的所有版本将共享相同的文件名。这是我第一次处理文件操作,所以如果我的问题听起来很无知,请告诉我。我可以在这项工作中使用 HttpClient.PostAsync 作为上传部分吗?或者如果可以直接复制,我可以只使用 Stream.CopyToAsync 吗?谢谢!

【问题讨论】:

你试过了吗?他们都工作了吗?您在实施过程中遇到了什么问题? 请提供一些你正在尝试做的代码 我尝试了 CopyToAsync,它复制了文件,但这一切都发生在我的本地机器上。 【参考方案1】:
    Stream.CopyToAsync 在同一服务器的内存中将流从一个复制到另一个。 在您的情况下,您可以使用 HttpClient.PostAsync,但另一台服务器应该有一些 api 来接收流内容并保存到磁盘。

【讨论】:

感谢您对此的解释。第二个选项的问题是目标服务器纯粹用于存储,因此那里不能有 API 来接收内容。我认为这是一个很常见的情况,我一定是走错了方向。 否则您可以使用 FileZilla 传输文件 谢谢! FileZilla 似乎是一个不错的工具,但要求是以编程方式完成此文件传输。 您可以使用 powershell 脚本。 Foreach-Object copy-item -ServerAPath $_.fullname -Destination \\ServerB\shared\Folder 谢谢!我会试试看!

以上是关于HttpClient.PostAsync 用于上传文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# HttpClient PostAsync 显示上传进度

C# HttpClient PostAsync 不适用于 django rest 框架

使用 Blazor 和 Aspnet Webapi 跟踪 HttpClient.PostAsync 进度

HttpClient postasync,带有自定义标头和应用程序/json,用于正文 C#

HttpClient.PostAsync 崩溃应用。如何捕捉异常?

异步等待 HttpClient.PostAsync 调用