Tengo un formulario en una página HTML que un usuario necesita para cargar un archivo que se publica en una página ASPX. En el código subyacente, quiero probar si un archivo se ha cargado realmente.HTTPRequest.Files.Count Nunca es igual a cero
if (Request.Files.Count > 0)
{
DoStuff(Request.Files[0]);
}
else
{
throw new Exception("A CSV file must be selected for upload.");
}
Nunca llegaré al otro. ¿Es así como opera ASP.NET? Si tengo un elemento de entrada de tipo archivo, ¿siempre va a subir un "archivo", incluso si no se selecciona uno?
¿Cuál es la forma correcta de hacerlo? ¿Tal vez esto?
if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0)
{
DoStuff(Request.Files[0]);
}
else
{
throw new Exception("A CSV file must be selected for upload.");
}
Desafortunadamente, si accede a la propiedad Archivos, no puede llamar posteriormente a Request.GetBufferlessInputStream: "Este método o propiedad no es compatible después de que se haya invocado HttpRequest.Form, Files, InputStream o BinaryRead" – dudeNumber4
@ dudeNumber4 Entonces, ¿la respuesta seleccionada es incorrecta? No tengo Visual Studio en este equipo ahora mismo para investigar. – kzh
Bueno, es incorrecto para mí porque necesito acceder a ese método para dividir los archivos cargados (grandes) para que no sobrecarga la memoria del servidor. Si no necesitas acceder a ese método, supongo que estás bien. – dudeNumber4