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?
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?
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.
você não deve usar "file: // C: /localfile.jpg" em vez de "C: /localfile.jpg"?
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"/>
C:
não é um esquema de URI reconhecido. Em file://c|/...
vez disso, tente .
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
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".
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 -
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;'>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title></title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
function showpreview(e) {
var reader = new FileReader();
reader.onload = function (e) {
$("#previewImage").attr("src", e.target.result);
}
//Imagepath.files[0] is blob type
reader.readAsDataURL(e.files[0]);
}
</script>
</head>
<body >
<div>
<input type="file" name="fileupload" value="fileupload" id="fileupload" onchange='showpreview(this)'>
</div>
<div>
</div>
<div>
<img width="50%" id="previewImage">
</div>
</body>
</html>
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.
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.
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">
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)
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
Você precisa fazer o upload da imagem também e, em seguida, vincular à imagem no servidor.
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 ().
começa com file:///
e termina com filename
deve funcionar:
<img src="file:///C:/Users/91860/Desktop/snow.jpg" alt="Snow" style="width:100%;">