【问题标题】:C# WebClient - downloading a file from an ftp to clientC# WebClient - 将文件从 ftp 下载到客户端
【发布时间】:2015-10-10 00:24:29
【问题描述】:

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

【问题讨论】:

  • ftp url 是一个有效的 url.. 如果是这样.. 您是否有权访问/访问该 ftp 位置.. 对我来说听起来很简单..
  • 是的,它是一个有效的 url,它需要用户名和密码,但是一旦输入它就可以工作,这就是为什么我认为上述方法接近我需要做的。我遇到的问题(或至少我认为)是针对将文件保存到的位置,例如最终用户的桌面。有什么建议吗?
  • 好吧,据我所知,您只是在下载没有路径或文件扩展名的文件名..您是否可以不让它弹出一个保存对话框,然后一旦用户在他们的本地计算机上选择一个文件路径..然后开始下载..
  • 我更新了问题,使其对要求更加精确。我提供的示例只是我认为可能需要发生的事情的“框架”。希望您或其他人可以添加它以向我展示更好的解决方案...谢谢。

标签: c# asp.net-mvc ftp


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    相关资源
    最近更新 更多