Solicitud de ASP.NET: ¿Puedo obtener un archivo publicado desde un control dinámico creado en el cliente?
-
03-07-2019 - |
Pregunta
Tengo un control web con algunos javascript personalizados. El javascript crea nuevos controles de carga de archivos en el cliente de forma dinámica utilizando un código similar a:
var newFileUpload = document.createElement('input');
newFileUpload.type = 'file';
container.appendChild(newFileUpload); // where container is a div
Esto existe en un formulario ASP.NET con encType configurado en multipart / form-data. Tendré controles 1 - n en la página (bueno, limitado a un número razonable, por supuesto).
Ahora me gustaría capturar los archivos cargados en mi aplicación ASP.NET. Debido al enfoque adoptado anteriormente, sé que no puedo capturarlos como lo haría desde un control FileUpload (que desafortunadamente no puedo usar). ¿Hay otra forma de capturar los archivos cargados?
He examinado varias áreas, entre ellas:
- Request.Files
- Request.Form
- Request.Form.Keys
- Request.InputStream
Pero no he podido encontrar el contenido. Creo que el cliente está enviando estos datos correctamente, pero no he podido determinar qué hace el servidor con la información sin procesar de la solicitud (si esto está expuesto).
¿Alguien tiene alguna sugerencia sobre las áreas que podría explorar?
Gracias
Solución
Debes agregar un nombre único a tu elemento de carga para obtenerlo de la colección Request.Form.
var newFileUpload = document.createElement('input');
newFileUpload.type = 'file';
//newFileUpload.id = 'file01';
newFileUpload.name = 'file01';
container.appendChild(newFileUpload);
EDITAR: Intenté id y name attibutes, the with name, puedes obtener el contenido mediante
Request.Form["file01"]
También si debe agregar el siguiente atributo a su elemento de formulario. Esto le permite obtener el contenido del archivo mediante Request.Files [" file01 "]:
enctype="multipart/form-data"