Funciona se o arquivo html for local (na minha unidade C), mas não se o arquivo html estiver em um servidor e o arquivo de imagem for local. Por que é que?
Quaisquer soluções alternativas possíveis?
javascript
html
filesystems
src
PeterV
fonte
fonte
src=""
Respostas:
Seria uma vulnerabilidade de segurança se o cliente pudesse solicitar arquivos do sistema de arquivos local e, em seguida, usar JavaScript para descobrir o que há neles.
A única maneira de contornar isso é construir uma extensão em um navegador. Extensões do Firefox e extensões do IE podem acessar recursos locais. O Chrome é muito mais restritivo.
fonte
você não deve usar "file: // C: /localfile.jpg" em vez de "C: /localfile.jpg"?
fonte
Os navegadores não têm permissão para acessar o sistema de arquivos local, a menos que você esteja acessando uma página html local. Você tem que carregar a imagem em algum lugar. Se estiver no mesmo diretório do arquivo html, você pode usar
<img src="localfile.jpg"/>
fonte
C:
não é um esquema de URI reconhecido. Emfile://c|/...
vez disso, tente .fonte
Honestamente, a maneira mais fácil era adicionar hospedagem de arquivos ao servidor.
Abra o IIS
Adicionar um diretório virtual no site padrão
Adicione as permissões apropriadas à pasta na unidade C: para "NETWORK SERVICE" e "IIS AppPool \ DefaultAppPool"
Atualizar site padrão
E pronto. Agora você pode navegar para qualquer imagem nessa pasta navegando para http: //yourServerName/whateverYourFolderNameIs/yourImage.jpg e usar esse url em seu img src
Espero que isso ajude alguém
fonte
IE 9: Se você quiser que o usuário dê uma olhada na imagem antes de postá-la no servidor: O usuário deve ADICIONAR o site à "lista de sites confiáveis".
fonte
podemos usar o FileReader () do javascript e sua função readAsDataURL (fileContent) para mostrar o arquivo da unidade / pasta local. Vincule o evento de mudança à imagem e, em seguida, chame a função showpreview do javascript. Experimente isto -
fonte
Deixando de lado as observações de Newtang sobre as regras de segurança, como você vai saber se alguém que visualizar sua página terá as imagens corretas em
c:\localfile.jpg
? Você não pode. Mesmo se você achar que pode, você não pode. Isso pressupõe um ambiente Windows, para começar.fonte
Vejo duas possibilidades para o que você está tentando fazer:
Você deseja que sua página da web, em execução em um servidor, encontre o arquivo no computador que você a criou originalmente?
Você quer buscá-lo no pc que está visualizando na página?
A opção 1 simplesmente não faz sentido :)
A opção 2 seria uma falha de segurança, o navegador proíbe uma página da web (servida da web) de carregar conteúdo na máquina do visualizador.
Kyle Hudson disse a você o que você precisa fazer, mas isso é tão básico que acho difícil acreditar que isso é tudo o que você quer fazer.
fonte
se você usa o navegador Google Chrome, pode usar desta forma
<img src="E://bulbpro/pic_bulboff.gif" width="150px" height="200px">
Mas se você usa o Mozila Firefox, você precisa adicionar "arquivo" ex.
<img src="file:E://bulbpro/pic_bulboff.gif" width="150px" height="200px">
fonte
Se você estiver implantando um site local apenas para você ou alguns clientes, pode contornar isso executando
mklink /D MyImages "C:/MyImages"
no diretório raiz do site como um administrador em cmd. Então, no html, faça<img src="MyImages/whatever.jpg">
e o link simbólico estabelecido por mklink conectará o link src relativo ao link em sua unidade C. Resolveu este problema para mim, por isso pode ajudar outras pessoas que tenham esta questão.(Obviamente, isso não funcionará para sites públicos, pois você não pode executar comandos cmd nos computadores das pessoas facilmente)
fonte
Eu tentei muitas técnicas e finalmente encontrei uma no lado C # e no lado JS. Você não pode fornecer um caminho físico para o atributo src, mas pode fornecer a string base64 como um src para a tag Img. Vamos examinar o exemplo de código C # abaixo.
<asp:Image ID="imgEvid" src="#" runat="server" Height="99px"/>
Código C #
if (File.Exists(filepath) { byte[] imageArray = System.IO.File.ReadAllBytes(filepath); string base64ImageRepresentation = Convert.ToBase64String(imageArray); var val = $"data: image/png; base64,{base64ImageRepresentation}"; imgEvid.Attributes.Add("src", val); }
Espero que isso ajude
fonte
Você precisa fazer o upload da imagem também e, em seguida, vincular à imagem no servidor.
fonte
que tal ter a imagem algo selecionado pelo usuário? Use uma tag input: file e depois de selecionar a imagem, mostre-a na página do cliente? Isso é viável para a maioria das coisas. No momento, estou tentando fazê-lo funcionar no IE, mas, como acontece com todos os produtos da Microsoft, é um cluster fork ().
fonte
começa com
file:///
e termina comfilename
deve funcionar:<img src="file:///C:/Users/91860/Desktop/snow.jpg" alt="Snow" style="width:100%;">
fonte