我正在从服务器下载文件,文件存在于与项目不在同一目录中的其他磁盘上
我的控制器代码是
public ActionResult GetFileFromDisk()
{
string PATH = @"E:\10-FEB-2012\DIR1\DIR2";
return File(Server.MapPath( (PATH + fileName ), type, fileName);
}
如果我不使用Server.MapPath代码工作在我的机器上,但是当我在服务器上部署应用程序时它会出错
答案 0 :(得分:1)
由于它已经是物理地址,因此您无需使用mappath进行转换。 MapPath用于将虚拟路径转换为物理路径。你可以在服务器上检查你的驱动器上是否存在该文件?还要检查它可能需要IIS_User或network_service的权限。
我通常加载文件然后使用stream作为File结果。 使用File(Stream stream,string contentType,string fileName)
的重载FileInfo info = new FileInfo(packageItem.PhysicalPath);
if (info.Exists)
{
return File(info.OpenRead(), System.Net.Mime.MediaTypeNames.Application.Octet, info.Name);
}
答案 1 :(得分:1)
为了能够下载文件,需要在网站上提供文件位置。即使您当前的应用程序中没有该文件,也必须在其他应用程序上提供该文件。否则你无法下载它。
如果您遇到问题或约束,无法将其放入应用程序路径并且您的应用程序可以访问该文件(读取),您可以在应用程序中读取该文件并在响应中重写该文件。