Pues para empezar, según Microsoft, el control FileUpload no es compatible con AJAX y el UpdatePanel. Para hacer que funcione, es necesario que tengamos un PostBack.
Entonces deberíamos tener algo asi:
- <Triggers>
- <asp:PostBackTrigger ControlID="cmdGuardar" />
- </Triggers>
Con esto, se forzara a que en el evento del botón que realizaría la carga del archivo mediante el FielUpload, haga un PostBack. Quitando la parte asíncrona de AJAX.
Y según esto “Microsoft”, todo queda resuelto, pero nop. los dolores de cabeza no hacen mas que empezar.
Al tenerlo así, en algún momento se subirá el archivo, pero no al primer intento, por desgracia, ya que al presionar el botón, el FileUpload viene vacío.
he estado buscando documentación de por que hace esto, pero no he tenido suerte para documentar el problema, pero lo que si tengo es una solución a este problema.
Habrá que agregar un poquito de codigo al botón el lado del cliente:
- OnClientClick="javascript:document.forms[0].encoding = 'multipart/form-data';"
o en ultimo de los casos se puede dejar el tag form de la siguiente manera:
- <form id="form1" runat="server" enctype="multipart/form-data">
Con esto se le esta diciendo al request que esta compuesto de dos partes, uno que el request como tal, y por otro lado el archivo, y por lo que he descubierto, en el foro de asp.net dicen que es necesario si se van a estar subiendo archivos al servidor con la página.
Por ultimo dejo otro link con otra alternativa, y solo menciono que esa no la he utilizado: The Code Project
Suerte y espero que les sea de utilidad.