HTTPRequest.Files.Count Mai uguale a zero
-
08-10-2019 - |
Domanda
Ho una forma in una pagina HTML che un utente deve utilizzare per caricare un file che i messaggi a una pagina ASPX. Nel codice dietro, voglio testare se un file è stato effettivamente caricato.
if (Request.Files.Count > 0)
{
DoStuff(Request.Files[0]);
}
else
{
throw new Exception("A CSV file must be selected for upload.");
}
Non sono mai arrivare al resto. È questo solo come ASP.NET funziona? Se ho un elemento di input di tipo file, è sempre andando a caricare un "file", anche se non si è selezionato?
Qual è il modo corretto di fare questo? Forse questo?
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.");
}
Soluzione
Forse solo questo farà:
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.");
}
Altri suggerimenti
Request.Files.Count
contiene sempre il no. di elementi <input type="file">
nel modulo, avvolto in un negozio di Key:Value
.
Quindi, se il modulo Ripubblicato non contiene i tag <input type="file">
, quindi Request.Files.Count
tornerà 0
.
Ogni Key
è la name
del <input type="file" name="OneOfTheKeys">
e il valore è di tipo HttpPostedFileWrapper
.
qui per conoscere HttpPostedFileWrapper
.
Si dovrebbe utilizzare il controllo e di controllo .HasFiles FileUpload per vedere se qualcosa è stato caricato.
http://msdn.microsoft. com / it-it / library / system.web.ui.webcontrols.fileupload.aspx
Vorrei anche fare in modo che i dati di ritorno dal metodo .count non è una stringa. Un valore di stringa di '0' è sempre maggiore di un valore di 0 int; che sarebbe sempre tornare vero in quella condizione.
vorrei provare typecasting il ritorno .count come un int per assicurarsi che i tipi adeguate sono messe a confronto. Anche una stringa '-1' ha un valore di bit maggiore di int zero.
solo un pensiero, anche se potrei sbagliarmi ....