c# WebClient -从ftp下载文件到客户端
本文关键字:文件 客户端 下载 ftp WebClient | 更新日期: 2023-09-27 18:17:04
我希望将授权代码从表单传递到控制器,评估代码,如果它匹配,则调用ftp站点以触发用户接收文件的下载事件。
有两个约束条件,1。我需要通过ftp站点凭据,2。我需要对用户隐藏url。登录后,"作为用户"登录ftp网站,我可以将url粘贴到浏览器中,它会触发zip文件的自动下载事件。我认为我必须使用下面的方法来传递凭据,但是,我希望避免必须先将文件下载到服务器上,然后再转过来将其传递给用户。(处理时间翻倍,对吧?)我需要一种方法来传递凭据到ftp站点,并触发下载事件,直接到用户机器到通常的"下载"文件夹…
我不知道如何做到这一点,也找不到任何可靠的参考资料。大多数都展示了如何从服务器向用户处理它,因为文件存储在应用程序所在的位置。任何参考或样品是赞赏的!
提前感谢!
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AuthCode(string code)
{
var username = "someuser";
var password = "somepass";
if(code.Equals("$%^123XYZ"))
{
var url = "ftp://url.zip";
var fileName = "Some Name";
var client = new WebClient();
client.Credentials = new NetworkCredential(username, password);
client.DownloadFile(url, fileName);
return View("GoodCode");
}
else
{
return View("BadCode");
}
}
FtpWebRequest类支持流响应。下面是一个使用流从FTP下载文件的示例。
要在动作FileStreamResult中返回一个流,可以使用将流传递到响应
return new FileStreamResult(stream, "application/pdf")
{
result.FileDownloadName = "somefile.pdf";
};