2009-04-28 14 views
20

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.Carga de archivos en el panel de actualización AJAX sin devolución completa

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 nuevo adjunto, se muestra Modal Popup, Modal contiene detalles en Updatepanel y en la vista de detalles que tengo control de carga de archivos, cuando el usuario golpeó 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 publicarla por completo.


¿Alguien tiene la solución de este problema?

anticipadas gracias por su amable ayuda .....

Respuesta

36

Para resolver este problema, consulte el siguiente paso.

  1. Agregue ajax-upload a su vista de detalle.
    • basado en marco flotante cargador como recurso # 1.
    • basado en Silverlight & cargador 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 Recurso # 2. que usa iframe oculto para cargar.
  2. Cargue el archivo en 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 la 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 de guardar, el sistema se moverá los archivos a su ubicación real de

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

Recursos

  1. ASP.NET File Upload with Real-Time Progress Bar
  2. ASP.NET File Upload like GMail (Commercial)

actualización

Después de casi un año, acabo de encontrar un gran 3ra partes el control de 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.

You can try & test Plupload by click here.

+1

Gran respuesta. Yo había votado ... ¡pero me fui corriendo por hoy! Alguien le da a este chico un +1. – jrista

+0

Lo que está haciendo coloca el control de carga de archivos en otra página y en el formulario adjunto, tomó IFRAME y configuró la página de control de carga de archivos fuente. En la página de control de carga de archivos de AsyncPostBack está la parte posterior de la publicación y carga el archivo adjunto .... Pero tengo un Escenario diferente aquí. Como mencioné en mi pregunta, tengo una vista detallada y en la vista de detalles tengo el control FileUpload y otra información también, cuando usuario pulse el botón guardar Necesito información binaria de la imagen en la misma página en lugar de otra, por cierto eso no es solución en mi escenario ... Gracias por responder –

+0

este tipo de solución me he implicado temprano, pero no ayudará en mi escenario. –

4

no se puede hacer sin binarios cooperantes están instalando 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.

+0

gracias por su rápida respuesta ¿Hay algún truco o solución para lograr esto? –

+0

No hay ningún truco o problema, ese es el punto de seguridad no sería seguro si hubiera una ronda de trabajo. Considere el tipo de cosas que podría hacer un codificador malicioso si existiera una ronda de trabajo así, entonces se da cuenta de por qué este tipo de cosas están bloqueadas. – AnthonyWJones

0

Los sitios que se ven que proporciona esta funcionalidad en general, utilizar flash o un iframe para que la devolución de datos se produce en el marco flotante y da la ilusión de una petición AJAX.

HTH

OneShot

+0

si usa IFrame, la información cargada en el archivo solo estará disponible en la fuente de la página IFrame –

+0

pero no tengo un escenario como este, he intentado con esta solución. –

1

el problema está en la forma en que funciona el control de carga de archivos HTML, no tiene nada que ver con ASP.net, por el control de carga de archivos para trabajar se necesita un registro completo de la datos de formulario. Solo puede simular que no está haciendo una devolución de datos completa, realizando todas las operaciones en un iframe oculto que sí lo hace cargando

+0

Posiblemente necesite dar más información para obtener más votos, pero la forma en que lo describe es esencialmente cómo los sitios como GMail realizan su carga Ajax. – Craig

0

He intentado con swfupload (http://swfupload.org/), pero tenga en cuenta que debe saltar a través de 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.

0

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

Creo que podría usarlo para lograr su 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.

Cuestiones relacionadas