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

Другие вопросы по тегам