working update not net fileupload control asp asp.net ajax file-upload updatepanel asynchronous-postback

asp.net - not - fileupload updatepanel



Carga de archivos en el panel de actualizaciĆ³n de AJAX sin devoluciĆ³n de datos completa (6)

Tengo un panel de actualización, en el panel de actualización tengo control de carga de archivos y control de botones, hago clic en el botón, necesito el archivo que he cargado en el control de carga de archivos en el panel de actualización.

Escenario exacto, tengo 8 pestañas en la página, cada pestaña contiene demasiada información, una de las pestañas es Adjunto, cuando el usuario hace clic en Agregar nueva ventana emergente modal adjunta, Modal contiene detalles en Updatepanel y en la vista de detalles tengo control de carga de archivos, cuando usuario presionó el botón Guardar , vista de detalles insertando evento disparado, en el evento de inserción necesito el archivo que he cargado.
Tenga en cuenta que mi página es pesada y no quiero postback completo.


¿Alguien tiene solución de este problema?

Gracias de antemano por su amable ayuda .....


El problema es con la forma en que funciona el control de carga de archivos HTML, no tiene nada que ver con ASP.net, para que el control de carga de archivos funcione, necesita una publicación completa de los datos del formulario. Solo puede simular que no está haciendo una devolución de datos completa, haciendo toda la operación en un iframe oculto que sí lo hace.


He intentado con swfupload ( http://swfupload.org/ ), pero tenga en cuenta que debe pasar por los aros si está utilizando la autenticación de formularios con navegadores que no sean IE. Esto es aparentemente un error flash, y no se solucionó en flash 10. Decidí no usarlo en nuestro framework debido a este error, pero de lo contrario era un gran producto.


Los sitios que ves que proporcionan esta funcionalidad generalmente usan flash o un iframe para que la devolución de datos se produzca en el iframe y da la ilusión de una solicitud de ajax.

HTH

Un trago


No se puede hacer sin que se instalen binarios de cooperación en el cliente. No existe un mecanismo seguro para que un marco AJAX pueda leer el contenido de un archivo y, por lo tanto, pueda enviarlo al servidor. El navegador solo lo admite como una publicación de formulario de varias partes desde un cuadro de entrada de archivo.


Para resolver este problema, vea el siguiente paso.

  1. Agregue ajax-upload a su vista detallada.
    • Cargador basado en iframe como Recurso # 1.
    • Uploader basado en Silverlight y basado en Flash. Me gusta esta técnica porque no requiere ninguna secuencia de comandos del lado del servidor para mostrar el estado de carga actual. Pero en HTML5, puede crear esto sin usar ningún complemento de navegador web.
    • Cargador comercial como el Recurso # 2. que usa iframe oculto para cargar.
  2. Subir archivo a una ubicación temporal.

    • Respuesta del sistema la ubicación temporal. A continuación, el cliente mantiene la ubicación temporal en la entrada oculta en forma detallada.
    • Mantenga una ubicación temporal con session_id. Puede almacenarlo en la base de datos o la variable de sesión depende de su marco.
  3. Al hacer clic en el botón Guardar, el sistema moverá los archivos a su ubicación real

Nota. El sistema eliminará automáticamente el archivo caducado de la ubicación temporal.

Recurso

  1. Carga de archivos ASP.NET con barra de progreso en tiempo real
  2. Carga de archivos ASP.NET como GMail (comercial)

Actualizar

Después de casi un año, acabo de encontrar un gran control de terceros para esta pregunta. Este es un complemento de código abierto de jQuery. Su nombre es Plupload que le permite cargar archivos usando HTML5, Silverlight, Flash o formularios normales y proporciona algunas características únicas, como el progreso de la carga, el cambio de tamaño de la imagen y las cargas fragmentadas.

Puede probar y probar Plupload haciendo clic aquí.


Recomiendo el widget uploader de YUI. Ver http://developer.yahoo.com/yui/uploader/

Creo que podrías usarlo para lograr tu objetivo. Su javascript necesitaría recuperar el archivo al cliente desde el servidor una vez que haya completado su carga. Pero la página no se actualiza: la carga se realiza mediante flash y un iframe oculto. La descarga para mostrar los contenidos del archivo al usuario sería a través de ajax.

Si el usuario no "aprueba" la carga, simplemente haga otra llamada ajax al servidor para eliminar el archivo.