从asp.net mvc中的FTP服务器下载文件

时间:2018-01-29 13:01:09

标签: c# asp.net-mvc asp.net-mvc-5

我的FTP服务器上有一些文件。现在我想让用户下载文件。 我怎样才能做到这一点?

我在互联网上搜索了很多但是找不到一些帮助。

注意:我正在使用MVC5和angularjs

我试过这个:

var  filePath = "FTP_FILE_PATH";
        Response.AddHeader("content-disposition", "inline; filename=" + "new");
        return File(filePath, "audio/mp3");

1 个答案:

答案 0 :(得分:1)

请注意,File方法的filename参数需要存储在Web服务器本地文件系统中的文件的路径。你不能在这里传递FTP地址。

相反,从FTP加载文件并从收到的FtpStream中提供它。

try {
    /* Create an FTP Request */
    var ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile);
    /* Log in to the FTP Server with the User Name and Password Provided */
    ftpRequest.Credentials = new NetworkCredential(user, pass);
    /* When in doubt, use these options */
    ftpRequest.UseBinary = true;
    ftpRequest.UsePassive = true;
    ftpRequest.KeepAlive = true;
    /* Specify the Type of FTP Request */
    ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
    /* Establish Return Communication with the FTP Server */
    var ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
    /* Get the FTP Server's Response Stream */
    var ftpStream = ftpResponse.GetResponseStream();

    // TODO: you might need to extract these settings from the FTP response
    const string contentType = "application/zip";
    const string fileNameDisplayedToUser = "FileName.zip"

    return File(ftpStream, contentType, fileNameDisplayedToUser);
}
catch (Exception ex) { 
    _logger.Error(ex); 
}

这个答案来自Display an Image from Ftp Server