0

我正在尝试使用将文件夹路径传递给下载控制器@Html.ActionLink,但我得到了找不到位置错误,例如

找不到文件“C:\Teerth Content\Project\Colege\WebApp\Media\@item.Content”

但是,当我给出硬编码值时,它确实有效。请问我有什么问题吗?

这是我的代码: 操作方法:

public FileResult Download(string fileName, string filePath)
{
    byte[] fileBytes = System.IO.File.ReadAllBytes(filePath);
    string documentName = fileName;
    return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, documentName);
}

看法

@Html.ActionLink("Download", "Download", "Marketing", routeValues: new
{
    fileName = @item.Content,
    filePath = Server.MapPath("~/Media/@item.Content"), 
    area = "AffiliateAdmin"
}, htmlAttributes: null)
4

1 回答 1

2

就像评论中提到的那样,您的视图中有一个错误:

代码("~/Media/@item.Content")呈现为C:\Teerth Content\Project\Colege\WebApp\Media\@item.Content,您实际上想要在其中Server.MapPath("~/Media/" + @item.Content)找到实际文件名。

但是您需要重新考虑这种设计,因为它会将您的整个机器都打开到网络上。肯定有人会尝试Download("C:\Teerth Content\Project\Colege\WebApp\web.config", "web.config"),暴露您的连接字符串和其他应用程序设置,更不用说服务器上您真的不希望客户端下载的其他文件。

于 2015-04-17T13:40:54.637 回答