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.");
}
È stato utile?

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 ....

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top