Navegador de teste: Versão do Chrome: 52.0.2743.116
É um javascript simples que serve para abrir um arquivo de imagem local como 'C: \ 002.jpg'
function run(){
var URL = "file:///C:\002.jpg";
window.open(URL, null);
}
run();
Aqui está meu código de exemplo. https://fiddle.jshell.net/q326vLya/3/
Por favor, me dê sugestões adequadas.
<input type=file>
para obter acesso a recursos locaisRespostas:
Sei que isso é meio antigo, mas vejo muitas perguntas como essa ...
Usamos muito o Chrome na sala de aula e é fundamental trabalhar com arquivos locais.
O que temos usado é o "Servidor Web para Chrome". Você o inicia, escolhe a pasta com a qual deseja trabalhar e vai para o URL (como 127.0.0.1:port que você escolheu)
É um servidor simples e não pode usar PHP, mas para um trabalho simples, pode ser sua solução:
https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb
fonte
Ok pessoal, eu entendo completamente os motivos de segurança por trás dessa mensagem de erro, mas às vezes, precisamos de uma solução alternativa ... e aqui está a minha. Ele usa ASP.Net (em vez de JavaScript, no qual esta pergunta foi baseada), mas espero que seja útil para alguém.
Nosso aplicativo interno tem uma página da web onde os usuários podem criar uma lista de atalhos para arquivos úteis espalhados por nossa rede. Quando eles clicam em um desses atalhos, queremos abrir esses arquivos ... mas é claro, o erro do Chrome impede isso.
Esta página da web usa AngularJS 1.x para listar os vários atalhos.
Originalmente, minha página da web estava tentando criar diretamente um
<a href..>
elemento apontando para os arquivos, mas isso produziu oNot allowed to load local resource
erro " " quando um usuário clicou em um desses links.A solução foi substituir esses
<a href..>
elementos por este código, para chamar uma função no meu controlador Angular ...A função em si é muito simples ...
E em meu projeto ASP.Net, adicionei um arquivo Handler chamado
DownloadExternalFile.aspx
que continha este código:E é isso.
Agora, quando um usuário clica em um dos meus links de atalho, ele chama a
OpenAnExternalFile
função, que abre esse arquivo .ashx, passando o caminho + nome do arquivo que queremos abrir.Este código do manipulador carrega o arquivo e, em seguida, passa seu conteúdo de volta na resposta HTTP.
E, trabalho feito, a página da Web abre o arquivo externo.
Ufa! Novamente - há uma razão pela qual o Chrome lança essa
Not allowed to load local resources
exceção " ", então tenha cuidado com isso ... mas estou postando este código apenas para demonstrar que esta é uma maneira bastante simples de contornar essa limitação.Só um último comentário: a pergunta original queria abrir o arquivo "
C:\002.jpg
". Você não pode fazer isso. Seu site ficará em um servidor (com sua própria unidade C:) e não terá acesso direto à unidade C: do seu usuário. Portanto, o melhor que você pode fazer é usar um código como o meu para acessar arquivos em algum lugar em uma unidade de rede.fonte
O Chrome bloqueia especificamente o acesso a arquivos locais dessa forma por motivos de segurança.
Esta é uma solução alternativa para habilitar o sinalizador no Chrome (e abrir seu sistema para vulnerabilidades):
fonte
1) Abra seu terminal e digite
npm install -g http-server
2) Vá para a pasta raiz em que deseja fornecer os arquivos e digite:
http-server ./
3) Leia a saída do terminal, algo meio
http://localhost:8080
que aparecerá.Tudo lá será permitido ser obtido. Exemplo:
background: url('http://localhost:8080/waw.png')
;fonte
Existe uma solução alternativa para o uso do Web Server para Chrome .
Aqui estão as etapas:
Agora acesse facilmente seu arquivo local:
PS: Você pode precisar selecionar a opção CORS Header na configuração avançada caso você enfrente qualquer erro de acesso de origem cruzada.
fonte
Você não poderá carregar uma imagem fora do diretório do projeto ou de um diretório de nível de usuário, portanto, o "aviso de recurso local não pode ser acessado".
Mas se você colocasse o arquivo em uma pasta raiz de seu projeto como em
{rootFolder}\Content\my-image.jpg
e referenciasse assim:fonte
Esse problema surge quando estou usando PHP como linguagem do lado do servidor e a solução alternativa era gerar codificação base64 da minha imagem antes de enviar o resultado ao cliente
Acho que pode dar a alguém a ideia de criar seu próprio trabalho em torno
obrigado
fonte
O Google Chrome não permite carregar recursos locais por causa da segurança. O Chrome precisa de um url http. Internet Explorer e Edge permitem carregar recursos locais, mas Safari, Chrome e Firefox não permitem carregar recursos locais.
Vá para o local do arquivo e inicie o servidor Python a partir daí.
python -m SimpleHttpServer
em seguida, coloque esse url em funcionamento:
fonte
Se você tiver o php instalado - você pode usar o servidor embutido. Basta abrir o diretório de destino com os arquivos e executar
fonte
Se você pudesse fazer isso, isso representaria um grande problema de segurança, pois você pode acessar seu sistema de arquivos e, potencialmente, agir sobre os dados disponíveis nele ... Felizmente não é possível fazer o que você está tentando fazer.
Se você precisa que recursos locais sejam acessados, você pode tentar iniciar um servidor web em sua máquina e, neste caso, seu método funcionará. Outras soluções alternativas são possíveis, como atuar nas configurações do Chrome, mas eu sempre prefiro o caminho limpo, instalando um servidor web local, talvez em uma porta diferente (não, não é tão difícil!).
Veja também:
fonte
Você só precisa substituir todos os caminhos de rede da imagem por strings de bytes na string HTML codificada armazenada. Para isso, é necessário HtmlAgilityPack para converter string Html em documento Html. https://www.nuget.org/packages/HtmlAgilityPack
Encontre o código abaixo para converter cada caminho de rede src de imagem (ou caminho local) em sting de bytes. Definitivamente, ele exibirá todas as imagens com caminho de rede (ou caminho local) no IE, chrome e firefox.
fonte
Essa solução funcionou para mim em PHP. Ele abre o PDF no navegador.
fonte
O Chrome e outros navegadores restringem o acesso de um servidor a arquivos locais por motivos de segurança. No entanto, você pode abrir o navegador no modo de acesso permitido. Basta abrir o terminal e ir para a pasta onde o chrome.exe está armazenado e escrever o seguinte comando.
Leia isto para mais detalhes
Dessa forma, no entanto, não funcionou para mim, então fiz uma rota diferente para cada arquivo em um diretório específico. Portanto, ir para esse caminho significava abrir esse arquivo.
Eu chamei esta função passando a lista de nome de arquivo no diretório
__dirname/public/extracted
e ela criou uma rota diferente para cada nome de arquivo que fui capaz de renderizar no lado do servidor.fonte
Encontrei esse problema e aqui está minha solução para o Angular, envolvi a pasta de ativos do Angular na função encodeURIComponent (). Funcionou. Mesmo assim, gostaria de saber mais sobre o risco desta solução, se houver:
`` `const URL =
${encodeURIComponent(
/assets/office/file_2.pdf)}
window.open (URL)fonte