Asp.net mvc 3 使用ASP MVC3下载文件时出错
这段代码应该使用mvc3控制器下载一个文件Asp.net mvc 3 使用ASP MVC3下载文件时出错,asp.net-mvc-3,download,Asp.net Mvc 3,Download,这段代码应该使用mvc3控制器下载一个文件 public FilePathResult GetFileFromDisk(String file) { String path = AppDomain.CurrentDomain.BaseDirectory + "AppData/"; String contentType = "text/plain"; return File(path+file, contentType, file); } 视图部分: @Html.A
public FilePathResult GetFileFromDisk(String file)
{
String path = AppDomain.CurrentDomain.BaseDirectory + "AppData/";
String contentType = "text/plain";
return File(path+file, contentType, file);
}
视图部分:
@Html.ActionLink("Download", "GetFileFromDisk","Upload", new { file = "textfile" },null);
但是当我点击链接时,我得到了这个错误
找不到路径“D:\Project\FileUploadDownload\FileUploadDownload\AppData\textfile”的一部分。[DirectoryNotFoundException:找不到路径“D:\Project\FileUploadDownload\FileUploadDownload\AppData\textfile”的一部分。] 为什么foldername在文件路径中重复?请提供一个解决方案…尝试如下:
public ActionResult GetFileFromDisk(string file)
{
var appData = Server.MapPath("~/App_Data");
var path = Path.Combine(appData, file);
path = Path.GetFullPath(path);
if (!path.StartsWith(appData))
{
// Ensure that we are serving file only inside the App_Data folder
// and block requests outside like "../web.config"
throw new HttpException(403, "Forbidden");
}
if (!System.IO.File.Exists(path))
{
return HttpNotFound();
}
var contentType = "text/plain";
return File(path, contentType, Path.GetFileName(path));
}