需求:返回Ftp上的文件给前端下载,由于安全考虑,不返回文件地址路径
我的代码(ASP.NET WebApi):
public IHttpActionResult Get()
{
string username = "ftpuser";
string password = "1";
try
{
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create("**");
ftp.Credentials = new NetworkCredential(username, password);
ftp.Method = WebRequestMethods.Ftp.DownloadFile;
ftp.UseBinary = true;
ftp.UsePassive = false;
WebResponse response = ftp.GetResponse();
Stream ftpStream = response.GetResponseStream();
//response.Close();
return new FtpFileStreamResult(ftpStream, "application/vnd.ms-excel", "2019.xlsx");
}
catch (Exception ex)
{
throw ex;
}
}
由于不想将请求Ftp的文件转为byte[](文件过大占用内存),也不想将Ftp的文件先保存到本地(效率有影响),想直接返回ftp的流信息,自定义了FtpFileStreamResult,请求会自动处理关闭Stream,但是WebResponse在此处关闭确有影响(注释部分),导致无法下载,请求会不断重试。请问这样做不可行吗?或者我应该如何关闭Ftp响应连接?
相似问题