Как передать путь к папке на контроллер MVC
Я пытаюсь передать путь к папке на контроллер загрузки с помощью @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)
1 ответ
Как упоминалось в комментариях, у вас есть ошибка в вашем представлении:
Код ("~/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")
, раскрывая ваши строки подключения и другие настройки приложения, не говоря уже о других файлах на вашем сервере, которые вы действительно не хотите, чтобы клиенты загружали.