«Не виртуальный путь», ошибка при загрузке файла - PullRequest
2 голосов
/ 13 февраля 2012

Я загружаю файл с сервера, файл присутствует на другом диске, который не находится в том же каталоге, что и проект,

мой код контроллера

public ActionResult GetFileFromDisk()
{
     string PATH = @"E:\10-FEB-2012\DIR1\DIR2";
     return File(Server.MapPath( (PATH + fileName ), type, fileName);
}

, если я не буду пользователем сервера.MapPath-код работает на моем компьютере, но когда я развертываю приложение на сервере, он выдает ошибку

Ответы [ 2 ]

1 голос
/ 02 марта 2012

Чтобы иметь возможность загрузить файл, местоположение файла должно быть доступно на веб-сайте. Даже если файл недоступен в вашем текущем приложении, он должен быть доступен в другом приложении. В противном случае вы не сможете скачать его.

Если у вас есть проблема или ограничение, которое вы не можете поместить в путь приложения, и ваше приложение может получить доступ к файлу (чтение), вы можете прочитать файл в своем приложении и переписать его в ответе.

1 голос
/ 13 февраля 2012

Поскольку это уже физический адрес, вам не нужно использовать mappath для его преобразования. MapPath используется для преобразования виртуального пути в физический путь. Можете ли вы проверить на сервере, есть ли у вас этот файл на диске? Также проверьте разрешения, которые могут понадобиться IIS_User или network_service.

Обычно я загружаю файл, а затем использую поток для результата файла. Использовать перегрузку File (Поток потока, строка contentType, строка fileName)

FileInfo info = new FileInfo(packageItem.PhysicalPath);
                if (info.Exists)
                {
                    return File(info.OpenRead(), System.Net.Mime.MediaTypeNames.Application.Octet, info.Name);
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...