Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

selecionar um determinado diretório para descarregar arquivos

Algo parecido com isso: <inpu type="file" webkitdirectory /> Srs., estou trabalhando em um projeto (node e angular) e estou tendo dificuldades. Procurei na internet e não encontrei uma solução satisfatório. Preciso de dentro do meu projeto (uma tela html) selecionar um diretório (windows explorer) e armazenar o caminhio completo do diretório selecionado e posteriormente gravar alguns arquivos, pode ser angular, html, typescript, javascript.

5 respostas

Fala ai Marcelo, tudo bem? Por questões de segurança isso não é possível de ser feito apenas com HTML e JavaScript no navegador.

O máximo que você pode fazer é selecionar um arquivo e pegar o Object. createObjectURL.

Para fazer o que você é informar o caminho em um input como se fosse texto mesmo:

/home/Users/Matheus/Desktop/alguma-pasta

E salvar essa informação no banco como texto.

Uma vez que tem ela salva, você pode usá-la para posteriormente gravar os arquivos via back-end.

Espero ter ajudado.

Boa tarde Matheus, obrigado pelo retorno. A solução pode ser em javascript, component angular, coloquei o código em html

<input type="file" webkitdirectory />

porque essa tag abre um "windows explorer" mas é para fazer upload de arquivos e tem algumas coisas pré-definidas como o botão para abrir e o retorno de quantidade de arquivos existem na pasta selecionada, eu não consigo alterar para atender minha necessidade.

Você vai precisar fazer como te falei, via texto em um input do tipo text.

Via JavaScript + HTML não é possível fazer isso por questões de segurança, adicionar esse atributo webkitdirectory não é recomendável por questões de segurança e por ser uma funcionalidade não padronizada.

Espero ter ajudado.

solução!
HTML
 <input [(ngModel)]="folder" autofocus='true' tabindex="2" maxlength="100" required>
                  <button mat-icon-button (click)="selecionaDiertorio()"><span class="material-icons">folder_open</span></button>                           

component.ts
  selecionaDiertorio() {
    dialog.showOpenDialog({
      properties: ['openDirectory']
    }).then(result => {
      console.log('result.canceled: ', result.canceled)
      console.log('result.filePaths: ', result.filePaths)
      this.folder = result.filePaths[0];
    }).catch(err => {
      console.log('err: ',err)
    })
  }

Boa tarde Matheus, consegui resolver meu problema no código acima. Obrigado.

Boa Marcelo, fico feliz que tenha resolvido seu problema, parabéns.

Talvez eu não tenha entendido o que você realmente precisa fazer.

Sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.