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");
        }
    }

c# WebClient -从ftp下载文件到客户端

FtpWebRequest类支持流响应。下面是一个使用流从FTP下载文件的示例。

要在动作FileStreamResult中返回一个流,可以使用将流传递到响应

return new FileStreamResult(stream, "application/pdf")
 {
     result.FileDownloadName = "somefile.pdf";
 };