¿Cuál es la mejor manera de cargar un archivo a través de HTTP POST con un formulario web?

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

Pregunta

Básicamente, algo mejor que esto:

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

En primer lugar, el browse El botón se ve diferente en cada navegador.A diferencia del submit botón en un formulario, tienes que llegar a algunos hackear manera de darle estilo.

En segundo lugar, no hay ningún indicador de progreso que muestre cuánto del archivo se ha cargado.Por lo general, debe implementar algún tipo de forma del lado del cliente para deshabilitar envíos múltiples (p. ej.cambie el botón de envío a un botón deshabilitado que muestre "Envío de formulario...por favor espere.") o mostrar una advertencia gigante.

¿Existe alguna buena solución para esto que no utilice Flash o Java?

Yaakov:Ese producto parece ser exactamente lo que estoy buscando, pero el costo es de $1000 y es específicamente para ASP.NET. ¿Existe algún proyecto de código abierto que cubra la misma funcionalidad o una similar?

¿Fue útil?

Solución

Los cuadros de carga de archivos es donde nos encontramos actualmente si no desea involucrar otras tecnologías como Flash, Java o ActiveX.

Con HTML simple, estás bastante limitado a la experiencia que has descrito (sin barra de progreso, envíos dobles, etc.).Si está dispuesto a utilizar algo de JavaScript, puede resolver algunos de los problemas indicando que la carga está en progreso e incluso mostrando el progreso de la carga (Es un truco porque no deberías tener que hacer un viaje completo de ida y vuelta al servidor, pero al menos funciona).

Si está dispuesto a utilizar Flash (que está disponible prácticamente en cualquier lugar y en muchas plataformas), puede superar prácticamente todos estos problemas.Apareció una búsqueda rápida en Google. dos semejante componentes, ambos gratuitos y fuente abierta.Nunca usé ninguno de ellos, pero se ven bien.Por cierto, Flash tampoco está exento de problemas; por ejemplo, cuando utilizo el cargador de varios archivos para compartir diapositivas, el navegador seguía fallando constantemente :-(

Probablemente la mejor solución actualmente es detectar dinámicamente si el usuario tiene Flash, y si es el caso, darle la versión flash del cargador, mientras se le permite elegir la versión HTML básica.

HT

Otros consejos

Podrías echarle un vistazo a Subida elegante guion.Aunque usa flash, todavía se ve genial.

El problema aquí es que los navegadores trabajan específicamente para bloquear cualquier cosa que cambie el control básico de entrada de carga de archivos.No puedes cambiarlo con javascript, por ejemplo.

La razón es la seguridad: si pudiera crear un script, podría crear una página que, cuando la visites, me envíe varios archivos desde tu disco duro.No está bien.

Existen varias soluciones en este momento, pero son diferentes entre IE y FX (no sé sobre Safari, Opera, etc.).

Mira lo que http://www.gmail.com hace en IE y FX cuando adjunta algo a un correo electrónico.

Quiero ver ese botón basura de "Examinar"; me dice que no dejaré entrar nada inesperado.

Es cierto, el control de carga de archivos definitivamente está atrasado.Con suerte, esto se solucionará en una futura versión de asp.net.

Aunque cuesta algo de dinero, he encontrado la Control de carga de Telerik para tener todas las funciones que busca, incluido el estilo y las actualizaciones de progreso (también optimiza la memoria para cargas grandes).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top