如何将文件夹路径传递给 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")
,暴露您的连接字符串和其他应用程序设置,更不用说您服务器上您确实不希望客户端下载的其他文件。
我正在尝试使用 @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")
,暴露您的连接字符串和其他应用程序设置,更不用说您服务器上您确实不希望客户端下载的其他文件。