Quais são as maneiras de fazer um link html abrir uma pasta

106

Preciso permitir que os usuários de um aplicativo abram uma pasta clicando em um link dentro de uma página da web. O caminho da pasta está na rede e pode ser acessado de qualquer lugar. Provavelmente tenho certeza de que não existe uma maneira fácil de fazer isso, mas talvez eu esteja enganado.

Sebastien Lachance
fonte
4
Eu respondi abaixo; este é um requisito comum de aplicativos da Web corporativos que se torna quase impossível devido à segurança mal orientada (deve ser possível habilitar links de arquivo em páginas http confiáveis). Eu apenas testei extensivamente no Windows.
Andrew Duffy

Respostas:

107

Você deseja abrir uma pasta compartilhada no Windows Explorer? Você precisa usar um file:link, mas há ressalvas:

  • O Internet Explorer funcionará se o link for um caminho UNC convertido ( file://server/share/folder/).
  • O Firefox funcionará se o link estiver em sua própria forma mutilada usando cinco barras ( file://///server/share/folder) e o usuário tiver desativado a restrição de segurança em file:links em uma página servida por HTTP . Felizmente, o IE também aceita o formulário de link danificado.
  • Opera, Safari e Chrome não podem ser convencidos a abrir um file:link em uma página servida por HTTP.
Andrew Duffy
fonte
4
no IE apenas se o caminho UNC e o site que contém o link estiverem no mesmo domínio, ou seja, apenas na intranet.
Stefan Steiger
4
Acho que isso não é mais correto - versões mais recentes do IE parecem bloquear esse comportamento, assim como Chrome / Safari / etc.
ZeekLTK
1
Eu tentei fazer isso no IE 11 e você pode, de fato, abrir um arquivo local sem baixá-lo (como abrir um caminho de arquivo já existente). Isso ainda não existe no cromo.
Hohohodown
4
Você pode fazer isso funcionar no Chrome através da extensão LocalLinks do Chrome . Graças a esta resposta StackOverflow
Zach Johnson
@Andrew Duffy, existe algum tipo de documentação que diga que o Google Chrome está bloqueando esse comportamento? Eu gostaria de saber mais sobre isso
trocadilho
7

O URL file://[servername]/[sharename]deve abrir uma janela do explorador para a pasta compartilhada na rede.

altamente cafeinado
fonte
4

certifique-se de que suas permissões de pasta estejam configuradas de forma que uma listagem de diretório seja permitida, então apenas aponte sua âncora para essa pasta usando chmod 701 (que pode ser arriscado) por exemplo

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

certifique-se de que você não tem nenhum index.html arquivo de índice nesse diretório

fechadura
fonte
Essa resposta funciona. A parte "lista de diretórios permitida" é muito importante. Se não for permitido, você pode habilitá-lo, mas é diferente para cada aplicativo de servidor.
Travis
3

Usar file: ///// simplesmente não funciona se as configurações de segurança estiverem definidas para um nível moderado.

Se você apenas deseja que os usuários possam baixar / visualizar arquivos * localizados em uma rede ou compartilhar, você pode configurar um Diretório Virtual no IIS. Na guia Propriedades, certifique-se de que "Um compartilhamento localizado em outro computador" esteja selecionado e "Conectar como ..." é uma conta que pode ver o local da rede.

Crie um link para o diretório virtual da sua página da web (por exemplo, http: // seusite / seudirvirtual / ) e isso abrirá uma visualização do diretório no navegador da web.

* Você pode permitir permissões de gravação no diretório virtual para permitir que os usuários adicionem arquivos, mas não tentei, e presumir que as permissões de rede sobrescreveriam esta configuração.

Bickie
fonte
Isso é relevante hoje, pois o Chrome e as versões mais recentes do IE bloquearão o acesso aos recursos locais file: // de páginas da web que não sejam de arquivo. Além disso, isso pode ser configurado para ser executado no IIS Express, embora deva ser adicionado e executado manualmente.
Schmuli
1

Você também pode copiar o endereço do link e colá-lo em uma nova janela para contornar a segurança. Isso funciona no Chrome e no Firefox, mas você pode ter que adicionar barras no Firefox.

Wyrmwood
fonte
1

Um pouco tarde para a festa, mas tive que resolver isso sozinho recentemente, embora um pouco diferente, ainda pode ajudar alguém com circunstâncias semelhantes às minhas.

Estou usando o xampp em um laptop para executar um aplicativo de site puramente local no Windows. (Um ambiente muito específico que conheço). Nesse caso, uso um link html para um arquivo php e executo:

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

Isso abre uma janela local do Windows Explorer.

Lucas taulealea
fonte
1
Promissor, mas quando executo isso no Firefox a guia trava. (Parece que a sessão está agitando ou algo assim, porque posso acessar outros sites, mas este site parece estar travado - até mesmo em outras guias!)
Stephen R
Acabei de testar no Firefox, funciona para mim, mas não consigo especificar a pasta na qual abrir, ele só abre no diretório raiz do arquivo php.
Lucas Taulealea
0

Espero que algum dia ajude alguém. Eu estava fazendo um pequeno POC e me deparei com isso. Um botão, onClick exibe o conteúdo da pasta. Abaixo está o HTML,

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