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

时间:2015-10-10 00:24:29

标签: c# asp.net-mvc ftp

我希望将授权代码从表单传递到控制器,评估代码,如果匹配,请调用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");
        }
    }

1 个答案:

答案 0 :(得分:0)

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

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

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