如何将文件夹路径传递给 mvc 控制器

how to pass a folder path to mvc controller

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

Could not find file '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)

如前所述,您的观点有误:

代码 ("~/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"),暴露您的连接字符串和其他应用程序设置,更不用说您服务器上您确实不希望客户端下载的其他文件。