Quero poder visualizar um arquivo (imagem) antes de ser carregado. A ação de visualização deve ser executada no navegador sem usar o Ajax para fazer upload da imagem.
Como posso fazer isso?
javascript
jquery
file-upload
Simbian
fonte
fonte
Respostas:
Veja o código de exemplo abaixo:
Além disso, você pode tentar esta amostra aqui .
fonte
document.getElementById('blah').src=e.target.result)
input.files[0]
como dados, consulte o documento do jQuery .input.files[0]
não tem o caminho completo. Como o FileReader localiza o arquivo?Existem algumas maneiras de fazer isso. A maneira mais eficiente seria usar URL.createObjectURL () no arquivo da sua <entrada> . Passe esse URL para img.src para informar ao navegador para carregar a imagem fornecida.
Aqui está um exemplo:
Você também pode usar FileReader.readAsDataURL () para analisar o arquivo em sua <input>. Isso criará uma sequência na memória contendo uma representação base64 da imagem.
fonte
URL.revokeObjectURL
quando você está feito com o seu blobSolução de uma linha:
O código a seguir usa URLs de objeto, que são muito mais eficientes que o URL de dados para exibir imagens grandes (um URL de dados é uma string enorme que contém todos os dados do arquivo, enquanto que um URL de objeto é apenas uma string curta que faz referência aos dados do arquivo. memória):
URL gerado será como:
fonte
FileReader
,input.files
etc.)URL.createObjectURL
é o caminho a seguir quando se lida com arquivos enviados pelo usuário, ele apenas cria um link simbólico na memória para o arquivo real no disco do usuário.A resposta do LeassTaTT funciona bem em navegadores "padrão" como o FF e o Chrome. A solução para o IE existe, mas parece diferente. Aqui, descrição da solução entre navegadores:
Em HTML, precisamos de dois elementos de visualização,
img
para navegadores padrão ediv
para o IEHTML:
Em CSS, especificamos a seguinte coisa específica do IE:
CSS:
Em HTML, incluímos os Javascripts padrão e específicos do IE:
O
pic_preview.js
é o Javascript da resposta do LeassTaTT. Substitua o$('#blah')
whith a$('#preview')
e adicione o$('#preview').show()
Agora, o Javascript específico do IE (pic_preview_ie.js):
Isso é. Funciona no IE7, IE8, FF e Chrome. Teste no IE9 e relate. A idéia da visualização do IE foi encontrada aqui: http://forums.asp.net/t/1320559.aspx
http://msdn.microsoft.com/en-us/library/ms532969(v=vs.85).aspx
fonte
Editei a resposta de @ Ivan para exibir a imagem "Sem visualização disponível", se não for uma imagem:
fonte
Aqui está uma versão de vários arquivos , com base na resposta de Ivan Baev.
O HTML
JavaScript / jQuery
Requer o jQuery 1.8 devido ao uso de $ .parseHTML, que deve ajudar na mitigação do XSS.
Isso funcionará imediatamente e a única dependência necessária é o jQuery.
fonte
Sim. É possível.
Html
JS
Você pode obter uma demonstração ao vivo a partir daqui.
fonte
JSfiddle limpo e simples
Isso será útil quando você desejar que o evento seja acionado indiretamente a partir de uma div ou um botão.
fonte
<label>
e evitar o javascript para manipular completamente o botão. Acione a entrada de arquivo com HTML / CSS puro. , e não é hacky.Exemplo com várias imagens usando JavaScript (jQuery) e HTML5
JavaScript (jQuery)
Marcação (HTML)
fonte
Que tal criar uma função que carrega o arquivo e dispara um evento personalizado. Em seguida, anexe um ouvinte à entrada. Dessa forma, temos mais flexibilidade para usar o arquivo, não apenas para visualizar imagens.
Provavelmente meu código não é tão bom quanto alguns usuários, mas acho que você entenderá isso. Aqui você pode ver um exemplo
fonte
A seguir está o código de trabalho.
Javascript:
fonte
No React, se o arquivo estiver em seus props, você poderá usar:
fonte
E esta solução?
Basta adicionar o atributo de dados "data-type = editable" a uma tag de imagem como esta:
E o roteiro do seu projeto fora do curso ...
Veja a demonstração no JSFiddle
fonte
Tente isto
fonte
Isso visualizará vários arquivos como imagens em miniatura por vez
Html
Roteiro
Demonstração de trabalho no Codepen
Demonstração de trabalho no jsfiddle
Espero que isso ajude.
fonte
Eu criei um plugin que pode gerar o efeito de visualização no IE 7+, graças à Internet, mas tem poucas limitações. Coloquei-o em uma página do github para que seja mais fácil obtê-lo
fonte
Para upload de várias imagens (modificação da solução @ IvanBaev)
http://jsfiddle.net/LvsYc/12330/
Espero que isso ajude alguém.
fonte
É o meu código. Suporte IE [6-9], chrome 17 +, firefox, Opera 11 +, Maxthon3
fonte
Iamge padrão
fonte
Aqui está uma solução se você estiver usando o React:
fonte
Este é o método mais simples de visualizar a imagem antes de carregá-la no servidor a partir do navegador sem usar o Ajax ou qualquer função complicada. Ele precisa de um evento "onchange" para carregar a imagem.
A imagem será carregada imediatamente após a seleção.
fonte
para o meu aplicativo, com parâmetros de URL GET criptografados, apenas isso funcionou. Eu sempre tenho um
TypeError: $(...) is null
. Retirado de https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURLfonte
HTML
Isso também lida com maiúsculas e minúsculas quando o arquivo com tipo inválido (ex. Pdf) é escolhido
fonte