2012-07-20 10 views
5

My QuestionEl control FileUpload funciona con un segundo clic, pero no con el primer intento de guardar el archivo publicado.

Pude responderme a mí mismo, sin embargo, el mismo conjunto de funciones tiene otro problema. Por alguna razón, la primera devolución de datos del evento guardado del archivo publicado golpea el Objeto Ol 'no establecido en una instancia de un error objeto, pero en el segundo intento de cargar un archivo y activar mi evento guardar (convierte a byte [] un almacenado como SQL Server BLOB) hace todo lo que se supone que debe hacer.

Same problem here

hay una buena sugerencia de utilizar el control de AJAX AsyncUpload sin embargo yo soy un firme creyente de la eliminación de la causa y no tratar el problema. Voy a seguir por este camino a mejor mi comprensión de asp.net etc.

Habría una wizrd entre ustedes que podrían ayudar a identificar qué me sale "objeto no establecida como referencia inst de obj" error en la primera devolución de datos, pero en el segundo funciona bien. La página de contenido tiene una página maestra que envuelve la página de contenido en un panel de actualización. No es mi decisión hacer esto. También hay un panel de actualización con activadores de devolución orientados a mi evento guardar.

¿Cuáles son sus pensamientos personas?

Respuesta

12

El problema (como se ve aquí http://forums.asp.net/t/1060363.aspx) parece que cuando se utiliza la propiedad de visibilidad en el panel circundante (como parece que está ligado a la cuestión).

La solución sugerida es utilizar la visibilidad CSS lugar a fin de utilizar esto para hacerlo invisible -

<asp:Panel ID="pnlUpload" runat="server" class="workerDetailsPanelLeft" style="display:none"> 

La explicación para esto desde el hilo se

Si el contenedor se establece en invisible, el control de carga no se representa en realidad como HTML, lo que hace que el enctype del formulario no se establezca en enctype = "multipart/form-data", lo que hace que el control de carga del archivo no publique el archivo seleccionado en el servidor. La solución es ya sea para asegurarse el control FileUpload se vuelve a HTML (estableciendo su estilo de display: none en lugar de Visible = false), o manualmente ajustando el enctype

Así pues, otra solución sería alterar su etiqueta de forma a este

<form id="form1" enctype="multipart/form-data" runat="server"> 

Creo que cualquiera de esos debería resolver su problema.

+1

Excelente, lo entiendo ahora. Muchas gracias por señalar eso. Claramente lo pasé por alto. +1 y respuesta :-) – dotnetnewb

4

Puede hacer lo mismo a través del código en el evento Page_Load. Ingrese este código y se solucionará el problema.

Page.Form.Attributes.Add("enctype", "multipart/form-data"); 
Cuestiones relacionadas