Просмотр файлов на стороне сервера в ASP.NET
Я создаю ASP.NET веб-приложение для планирования задач на нашем сервере из удаленного расположения с помощью оболочки .NET для запланированных задач. Однако я застрял.
Пользователь должен иметь возможность просматривать файловую систему на сервере, чтобы получить "файл для запуска" для новой задачи, которую пользователь создает в этом приложении. Мне нужно получить путь к файлу / filename и передать его в оболочку .NET.
Я пробовал использовать HTMLInputFile, но я не нашел способа заставить это работать для мне.
Любая помощь приветствуется.
Спасибо
Обновление:
Для этого проекта мы решили просто перечислить исполняемые файлы в выпадающем списке, который будет доступен пользователям, так как им действительно не нужен полный доступ к файловой системе, просто в целях безопасности.
4 ответа:
HTMLInputFile используется для просмотра файловой системы клиента и загрузки файла на сервер. Он не используется для просмотра файловой системы сервера.
Вам понадобится что-то совсем другое. Вам потребуется некоторый код на стороне сервера для отображения структуры папок на стороне сервера пользователю через браузер.
Есть пример базовой реализации этого здесь.
Обновление:
В этом примере путь, который вы заменяете "yourfolderHere" на должен быть виртуальный путь, а не абсолютный путь. Так, например "C:\Inetpub\wwwroot\uploads" не сработает, но "закачки" сработают.
Я надеюсь, что само собой разумеется, что есть серьезные проблемы безопасности, о которых нужно думать при реализации чего-то подобного.
HTMLInputFile будет работать только на клиентском компьютере.
Вам нужно написать браузер файловой системы в ASPX/HTML, который просматривает на стороне сервера. Это не должно быть так сложно сделать.
Нельзя использовать тег
<input type="file"
Это вызовет диалог на стороне клиента, который просматривает клиентскую машину.
Насколько мне известно, вам нужно создать свой собственный "браузер".
Например, вы можете использовать My.Компьютер.Классы файловой системы для получения списка файлов в папке и отображения их на веб-странице. Затем пользователь выбирает соответствующий файл и отправляет ответ обратно на сервер.
Вы можете использовать System.IO.Directory для получения каталогов и файлов. Они могут быть показаны несколькими способами. Простой выбор браузера / файла должен быть возможен менее чем в 50 строках кода.
Также имейте в виду, что вам может потребоваться предоставить дополнительные разрешения пользователю, который работает в вашем веб-приложении, чтобы файловая система была доступна.
Есть также различные последствия для безопасности вокруг этого, так что не предоставляйте доступ ко всему, если вы действительно не нуждаетесь в этом.