Jakie są sposoby, aby link HTML otwierał folder


106

Muszę pozwolić użytkownikom aplikacji otwierać folder, klikając łącze na stronie internetowej. Ścieżka do folderu znajduje się w sieci i można uzyskać do niej dostęp z dowolnego miejsca. Prawdopodobnie nie ma na to prostego sposobu, ale może się mylę?


4
Odpowiedziałem poniżej; Jest to powszechny wymóg aplikacji internetowych dla przedsiębiorstw, który jest prawie niemożliwy ze względu na błędne zabezpieczenia (powinno być możliwe włączenie łączy do plików na zaufanych stronach http). Dokładnie testowałem tylko w systemie Windows.
Andrew Duffy

Odpowiedzi:


107

Czy chcesz otworzyć udostępniony folder w Eksploratorze Windows? Musisz użyć file:linku, ale są pewne zastrzeżenia:

  • Internet Explorer będzie działał, jeśli łącze jest przekonwertowaną ścieżką UNC ( file://server/share/folder/).
  • Firefox będzie działał, jeśli łącze ma swoją własną zniekształconą formę przy użyciu pięciu ukośników ( file://///server/share/folder), a użytkownik wyłączył ograniczenie bezpieczeństwa dotyczące file:linków na stronie udostępnianej przez HTTP . Na szczęście IE akceptuje również formularz zniekształconego łącza.
  • Opery, Safari i Chrome nie da się przekonać do otwarcia file:linku na stronie obsługiwanej przez HTTP.

4
w IE tylko wtedy, gdy ścieżka UNC i strona internetowa zawierająca odsyłacz znajdują się w tej samej domenie, czyli tylko w intranecie.
Stefan Steiger

4
Myślę, że to już nie jest poprawne - nowsze wersje IE wydają się blokować to zachowanie, podobnie jak Chrome / Safari / itp.
ZeekLTK

1
Właśnie wypróbowałem to w IE 11 i faktycznie możesz otworzyć plik lokalny bez pobierania go (tak jak w przypadku otwierania już istniejącej ścieżki do pliku). To nadal nie istnieje w chrome.
Hohohodown,


@Andrew Duffy, czy istnieje dokumentacja, która mówi, że Google Chrome blokuje to zachowanie? Chciałbym dowiedzieć się więcej na ten temat
kalambur

7

Adres URL file://[servername]/[sharename]powinien otwierać okno eksploratora do udostępnionego folderu w sieci.


4

upewnij się, że uprawnienia do folderu są ustawione tak, że lista katalogów jest dozwolona, ​​a następnie po prostu skieruj kotwicę na ten folder za pomocą na przykład chmod 701 (może to być ryzykowne)

<a href="./downloads/folder_i_want_to_display/" >Go to downloads page</a>

upewnij się, że nie masz pliku index.html żadnego pliku indeksu w tym katalogu


Ta odpowiedź działa. Część „dozwolone listowanie katalogów” jest bardzo ważna. Jeśli nie jest to dozwolone, możesz je włączyć, ale jest inne dla każdej aplikacji serwerowej.
Travis

3

Korzystanie z file: ///// po prostu nie działa, jeśli ustawienia zabezpieczeń są ustawione na nawet umiarkowany poziom.

Jeśli chcesz, aby użytkownicy mogli tylko pobierać / wyświetlać pliki * znajdujące się w sieci lub udostępniać, możesz skonfigurować katalog wirtualny w usługach IIS. Na karcie Właściwości upewnij się, że „Udział znajdujący się na innym komputerze” jest zaznaczony, a „Połącz jako ...” jest kontem, które może zobaczyć lokalizację sieciową.

Połącz z katalogiem wirtualnym na swojej stronie internetowej (np. Http: // twoja_witryna / twój katalog wirtualny / ), a to otworzy widok katalogu w przeglądarce internetowej.

* Możesz zezwolić na uprawnienia do zapisu w katalogu wirtualnym, aby umożliwić użytkownikom dodawanie plików, ale nie próbowano tego i zakładać, że uprawnienia sieciowe zastępują to ustawienie.


Ma to znaczenie dzisiaj, ponieważ Chrome i nowsze wersje IE będą blokować dostęp do lokalnych zasobów file: // ze stron internetowych niebędących plikami. Ponadto można to skonfigurować tak, aby działało w usługach IIS Express, chociaż należy je dodać i uruchomić ręcznie.
Schmuli,


1

Możesz również skopiować adres łącza i wkleić go w nowym oknie, aby obejść zabezpieczenia. Działa to w przeglądarce Chrome i Firefox, ale może być konieczne dodanie ukośników w przeglądarce Firefox.


1

Trochę spóźniłem się na imprezę, ale ostatnio musiałem sobie z tym poradzić, choć trochę inaczej, to może pomóc komuś w podobnych okolicznościach do moich.

Używam Xampp na laptopie, aby uruchomić czysto lokalną aplikację internetową w systemie Windows. (Znam bardzo specyficzne środowisko). W tym przypadku używam linku html do pliku php i uruchamiam:

shell_exec('cd C:\path\to\file');
shell_exec('start .');

Spowoduje to otwarcie lokalnego okna eksploratora Windows.


1
Obiecujące, ale kiedy uruchamiam to w przeglądarce Firefox, karta się zawiesza. (Wydaje się, że trwa sesja czy coś, ponieważ mogę uzyskać dostęp do innych witryn, ale ta witryna wydaje się zawieszona - nawet w innych zakładkach!)
Stephen R

Właśnie przetestowałem to w Firefoksie, działa dla mnie, ale nie mogę określić folderu, w którym chcesz otworzyć, otwiera się tylko w katalogu głównym pliku php.
Lucas Taulealea

0

Mam nadzieję, że kiedyś komuś to pomoże. Robiłem mały POC i natknąłem się na to. Przycisk onClick wyświetla zawartość folderu. Poniżej znajduje się kod HTML,

<input type=button onClick="parent.location='file:///C:/Users/' " value='Users'>

Chrome wyświetla mi błąd: Nie można załadować lokalnego zasobu: <URL>
Dave Sottimano
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.