Member 13382115 Ответов: 1

Mvc-загрузка файлов - проблемы с путями к файлам


Всем привет,

Пожалуйста, извините меня за недостаток знаний, я в лучшем случае новичок.

У меня есть приложение, которое позволяет пользователям загружать и скачивать файлы. Я могу загрузить файл на удаленный сервер и отобразить содержимое папки без проблем. Моя проблема возникает, когда я пытаюсь загрузить, в частности, когда я пытаюсь создать правильный путь. Вот мой код загрузки:

Что я уже пробовал:

<pre>  public FileResult Download(string ImageName)
        {
            var IdSes = Session["IdSes"];
           string FileVirtualPath= "/Da-app01/Data/Tracker/uploads/" + IdSes +"/"+ ImageName;

            return File(FileVirtualPath, "application/force-download", Path.GetFileName(FileVirtualPath));
        }



Когда я пытаюсь загрузить файл, я получаю эту ошибку:
[DirectoryNotFoundException: Could not find a part of the path 'C:\Users\G\Desktop\application\Da-app01\Data\Tracker\uploads\33\test1.pdf'.]


Проблема в том, что путь, который мне нужен, таков
Цитата:
Да-app01\сведения\трекер\загрузки\33\тест1.формат PDF


Где
Цитата:
C:\Users\G\Desktop\application
откуда? Могу ли я как-то удалить его?

Стараюсь Изо Всех Сил! Любая помощь в понимании будет оценена по достоинству!

1 Ответов

Рейтинг:
2

David_Wimbley

Ваша переменная FileVirtualPath, в глазах приложения MVC, является относительным путем, так что ваше приложение, по-видимому, находится в c:\users\g\desktop\application каталог, таким образом, он связывает ваше местоположение файла с тем, где он находится локально.

Для того чтобы файл загружался правильно, если он хранится локально на вашем компьютере, он должен использовать полный путь к тому месту, где находится файл. Таким образом, ваш файл не находится локально на вашем компьютере по адресу Da-app-01\Data\Tracker\uploads\33\test1.pdf он должен включать в себя путь привода.

Ваш файл должен ссылаться на что-то вроде String path = HttpContext.Current.Server.MapPath("~/" + FileVirtualPath); в пределах действия ваших контроллеров.

У вас также есть варианты HostingEnvironment.MapPath("~/" + FileVirtualPath) или Server.MapPath("~/" + FileVirtualPath)


Member 13382115

Один вопрос, прежде чем я попробую предложенное решение. Мое приложение находится в azure, но мои файлы находятся на удаленном файловом сервере. Сработает ли решение?

Graeme_Grant

Да. Попробовать не помешает, она не укусит!

David_Wimbley

Если приложение MVC находится на сервере 1, а файл-на сервере 2, то если приложение MVC пытается указать файл локально на сервере 2, то единственный способ сделать это-через общий диск. Или вы можете выставить файлы на сервере 2 через IIS в виде HTTP-ссылок и получить доступ к ним с сервера 1 (приложение MVC), используя обычные URL-адреса http файлов

Member 13382115

Спасибо за ответ,
Можете ли вы предоставить ссылку на некоторую информацию о том, как это может быть достигнуто?