Qual é a melhor maneira de fazer upload de um arquivo por meio de um HTTP POST com um formulário da web?

StackOverflow https://stackoverflow.com/questions/11974

Pergunta

Basicamente, algo melhor que isso:

<input type="file" name="myfile" size="50">

Em primeiro lugar, o browse O botão parece diferente em cada navegador.Ao contrário do submit botão em um formulário, você precisa criar alguns hackear maneira de estilizá-lo.

Em segundo lugar, não há indicador de progresso mostrando quanto do arquivo foi carregado.Geralmente, você precisa implementar algum tipo de maneira do lado do cliente para desativar vários envios (por exemplo,altere o botão de envio para um botão desativado mostrando "Envio de formulário...aguarde.") ou exibir um aviso gigante.

Existem boas soluções para isso que não usam Flash ou Java?

Yaacov:Esse produto parece ser exatamente o que procuro, mas o custo é de US$ 1.000 e é específico para ASP.NET. Existem projetos de código aberto que cobrem funcionalidades iguais ou semelhantes?

Foi útil?

Solução

caixas de envio de arquivos é onde estamos atualmente em se você não quiser envolver outras tecnologias como Flash, Java ou ActiveX.

Com HTML simples que são bastante limitados à experiência que você descreveu (sem barra de progresso, submete duplas, etc). Se você estiver disposto a usar algum javascript, você pode resolver alguns dos problemas, dando feedback que o carregamento está em andamento e até mesmo mostrando a progresso do upload (é um hack porque você não deveria ter que fazer um round-trip completo para o servidor e para trás, mas pelo menos ele funciona).

Se você estiver disposto a usar o Flash (que está disponível praticamente em qualquer lugar e em diversas plataformas), você pode superar praticamente todos esses problemas. A googling rápida apareceu dois tais componentes , ambos livres e Código aberto. Eu nunca usei qualquer um deles, mas eles ficam bem. BTW, o Flash não é sem seus problemas, quer, por exemplo, quando usando o uploader multi-arquivo para Slideshare, o navegador mantido constantemente batendo em mim: - (

Provavelmente a melhor solução atualmente é detectar dinamicamente se o usuário tem Flash, e se for o caso, dar-lhe a versão flash do carregador, enquanto ainda fazendo o possível para escolher o HTML básico.

HTH

Outras dicas

Você poderia ter um olhar para o Fantasia Carregar script. Embora ele usa flash-lo ainda parece ótimo.

O problema aqui é que os navegadores especificamente trabalhar para o bloco de qualquer coisa que muda o controle de entrada de upload de arquivos básico. Você não pode mudá-lo com javascript por exemplo.

A razão é a segurança - se eu poderia roteiro que eu poderia construir uma página que quando você visitou que me enviou vários arquivos do seu disco rígido. Não agradável.

Existem várias soluções alternativas no momento, mas eles são diferentes entre IE e FX (Eu não sei sobre o Safari, Opera, etc).

Olhe o que http://www.gmail.com faz no IE e FX quando você anexar algo a um e-mail.

Eu quero ver esse lixo botão "Browse." - ele me diz que eu não vou deixar nada em inesperado

É verdade, o controle de upload de arquivo é definitivamente para trás os tempos. Esperemos que este será abordado em uma versão futura asp.net.

Embora custa algum dinheiro, eu encontrei o Telerik controle de carregamento ter todas as funcionalidades que você está procurando, incluindo estilo e progresso atualizações (que também otimiza a memória para grandes uploads).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top