您可以从 Windows 表单应用程序中的 HttpContent 流下载文件吗?
Can you download a file from an HttpContent stream from within a Windows Forms Application?
我最近开发了一个 .NET Web 应用程序,它从我们网络上的某个特定位置下载 zip 文件。我通过检索内容流然后通过返回 File() 将其传递回视图来做到这一点。
我要模拟其行为的 .NET Web App 代码:
public async Task<ActionResult> Download()
{
try
{
HttpContent content = plan.response.Content;
var contentStream = await content.ReadAsStreamAsync(); // get the actual content stream
if (plan.contentType.StartsWith("image") || plan.contentType.Contains("pdf"))
return File(contentStream, plan.contentType);
return File(contentStream, plan.contentType, plan.PlanFileName);
}
catch (Exception e)
{
return Json(new { success = false });
}
}
plan.response在单独的方法中构建,然后存储为会话变量,以便它特定于用户,然后在此处访问以供下载。
我现在正在开发一个 Windows 表单应用程序,它需要能够从同一位置访问和下载这些文件。我能够检索响应内容,但我不知道如何继续才能在 Windows 表单应用程序中下载 zip。
有没有一种方法可以通过接收内容流,在 Windows Form App 中使用类似的方法下载此文件?这将很方便,因为访问文件最初需要登录并验证用户身份,因此不能仅通过文件路径正常访问。
好吧,根据您要完成的目标,这里有一个非常简单的示例,从 URL 下载文件并将其保存在本地:
string href = "https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-zip-file.zip";
WebRequest request = WebRequest.Create(href);
using (WebResponse response = request.GetResponse())
{
using (Stream dataStream = response.GetResponseStream())
{
Uri uri = new Uri(href);
string fileName = Path.GetTempPath() + Path.GetFileName(uri.LocalPath);
using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate))
{
dataStream.CopyTo(fs);
}
}
}
我最近开发了一个 .NET Web 应用程序,它从我们网络上的某个特定位置下载 zip 文件。我通过检索内容流然后通过返回 File() 将其传递回视图来做到这一点。
我要模拟其行为的 .NET Web App 代码:
public async Task<ActionResult> Download()
{
try
{
HttpContent content = plan.response.Content;
var contentStream = await content.ReadAsStreamAsync(); // get the actual content stream
if (plan.contentType.StartsWith("image") || plan.contentType.Contains("pdf"))
return File(contentStream, plan.contentType);
return File(contentStream, plan.contentType, plan.PlanFileName);
}
catch (Exception e)
{
return Json(new { success = false });
}
}
plan.response在单独的方法中构建,然后存储为会话变量,以便它特定于用户,然后在此处访问以供下载。
我现在正在开发一个 Windows 表单应用程序,它需要能够从同一位置访问和下载这些文件。我能够检索响应内容,但我不知道如何继续才能在 Windows 表单应用程序中下载 zip。
有没有一种方法可以通过接收内容流,在 Windows Form App 中使用类似的方法下载此文件?这将很方便,因为访问文件最初需要登录并验证用户身份,因此不能仅通过文件路径正常访问。
好吧,根据您要完成的目标,这里有一个非常简单的示例,从 URL 下载文件并将其保存在本地:
string href = "https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-zip-file.zip";
WebRequest request = WebRequest.Create(href);
using (WebResponse response = request.GetResponse())
{
using (Stream dataStream = response.GetResponseStream())
{
Uri uri = new Uri(href);
string fileName = Path.GetTempPath() + Path.GetFileName(uri.LocalPath);
using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate))
{
dataStream.CopyTo(fs);
}
}
}