Eu tenho um objeto de upload de arquivo na minha página:
<input type="file" ID="fileSelect" />
com os seguintes arquivos do Excel na minha área de trabalho:
- file1.xlsx
- file1.xls
- file.csv
Eu quero o upload do arquivo para somente mostrar .xlsx
, .xls
, e .csv
arquivos.
Usando o accept
atributo, descobri que esses tipos de conteúdo cuidavam de .xlsx
& .xls
extensões ...
accept
= application / vnd.openxmlformats-officedocument.spreadsheetml.sheet (.XLSX)
accept
= application / vnd.ms-excel (.XLS)
No entanto, não consigo encontrar o tipo de conteúdo correto para um arquivo CSV do Excel! Alguma sugestão?
EXEMPLO: http://jsfiddle.net/LzLcZ/
Respostas:
Bem, isso é embaraçoso ... Encontrei a solução que procurava e não poderia ser mais simples. Usei o código a seguir para obter o resultado desejado. Espero que isso ajude alguém no futuro. Obrigado a todos por sua ajuda.
Tipos de aceitação válidos:
Para arquivos CSV (.csv), use:
Para arquivos do Excel 97-2003 (.xls), use:
Para arquivos do Excel 2007+ (.xlsx), use:
Para arquivos de texto (.txt), use:
Para arquivos de imagem (.png / .jpg / etc), use:
Para arquivos HTML (.htm, .html), use:
Para arquivos de vídeo (.avi, .mpg, .mpeg, .mp4), use:
Para arquivos de áudio (.mp3, .wav, etc), use:
Para arquivos PDF , use:
DEMO:
http://jsfiddle.net/dirtyd77/LzLcZ/144/
NOTA:
Se você estiver tentando exibir arquivos CSV do Excel (
.csv
), NÃO use:text/csv
application/csv
text/comma-separated-values
( funciona apenas no Opera ).Se você estiver tentando exibir um tipo de arquivo específico (por exemplo, a
WAV
ouPDF
), isso quase sempre funcionará ...fonte
<input type="file" accept=".csv, text/csv" />
trabalhou para mim no firefox, chrome e opera no mac. somente .csv não funcionou em todos os navegadores.Hoje em dia você pode apenas usar a extensão do arquivo
fonte
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel
) ainda não pareça funcionar no Edge 41.16299.820.0 stackoverflow.com/questions/31875617/… wpdev.uservoice.com/forums/257854-microsoft-edge-developer/…Dom este atributo é muito antigo e não é aceito em navegadores modernos, tanto quanto eu sei, mas aqui está uma alternativa a ele, tente isso
Eu acho que isso irá ajudá-lo, é claro, que você pode alterar esse script de acordo com suas necessidades.
fonte
accept
atributo é a dica que ele fornece para a caixa de diálogo de arquivo aberto. O usuário deve receber arquivos correspondentes por padrão, presumivelmente com a opção de selecionar outros tipos, se desejar - é assim que os navegadores modernos se comportam agora.Eu usei
text/comma-separated-values
para o tipo mime CSV no atributo accept e funciona bem no Opera. Tenteitext/csv
sem sorte.Alguns outros tipos MIME para CSV se o sugerido não funcionar:
Fonte: http://filext.com/file-extension/CSV
fonte
Isso não funcionou para mim no Safari 10:
Eu tive que escrever isso:
fonte
Você pode conhecer o tipo de conteúdo correto para qualquer arquivo, fazendo o seguinte:
1) Selecione o arquivo interessado,
2) E execute no console isso:
Você também pode definir o atributo "múltiplo" para sua entrada para verificar o tipo de conteúdo de vários arquivos por vez e fazer o seguinte:
A aceitação de atributo tem alguns problemas com vários atributos e não funciona corretamente neste caso.
fonte
Modifiquei a solução do @yogi. A adição é que, quando o arquivo está no formato incorreto, redefino o valor do elemento de entrada.
Eu tenho o buildin de verificação personalizado, porque na janela do arquivo aberto o usuário ainda pode escolher as opções "Todos os arquivos ('*')", independentemente de eu definir explicitamente o atributo de aceitação no elemento de entrada.
fonte
Agora você pode usar o novo atributo de validação de entrada html5
pattern=".+\.(xlsx|xls|csv)"
.fonte
This attribute applies when the value of the type attribute is text, search, tel, url or email; otherwise it is ignored.
Em relação à entrada de arquivo, eles vão dizerfile: A control that lets the user select a file. Use the accept attribute to define the types of files that the control can select.