HTTPRequest.Files.Count jamais égal à zéro
-
08-10-2019 - |
Question
J'ai un formulaire sur une page HTML qu'un utilisateur doit utiliser pour télécharger un fichier qui affiche à une page ASPX. Dans le derrière de code, je veux tester si un fichier a été effectivement chargé.
if (Request.Files.Count > 0)
{
DoStuff(Request.Files[0]);
}
else
{
throw new Exception("A CSV file must be selected for upload.");
}
Je ne suis jamais arrivé à un autre. Est-ce juste comment fonctionne ASP.NET? Si j'ai un élément d'entrée de fichier de type, est-il toujours aller télécharger un « fichier », même si l'on est pas sélectionné?
Quelle est la bonne façon de le faire? Peut-être cela?
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.");
}
La solution
Peut-être que cela va faire:
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.");
}
Autres conseils
Request.Files.Count
contient toujours pas. des éléments de <input type="file">
dans votre forme, enveloppé dans un magasin de Key:Value
.
Par conséquent, si votre formulaire ne contient pas affiché le toutes les balises <input type="file">
, puis Request.Files.Count
retournera 0
.
Chaque Key
est le name
du <input type="file" name="OneOfTheKeys">
et la valeur est de type HttpPostedFileWrapper
.
Voir ici pour en savoir plus sur HttpPostedFileWrapper
.
Vous devez utiliser le contrôle FileUpload et contrôle .HasFiles pour voir si quelque chose a été téléchargé.
http://msdn.microsoft. com / fr-fr / bibliothèque / system.web.ui.webcontrols.fileupload.aspx
Je également vous assurer que les données retour par la méthode .count n'est pas une chaîne. Une valeur de chaîne de « 0 » est toujours supérieure à une valeur entière de 0; qui serait toujours retourner vrai dans cet état.
Je voudrais essayer typecasting le retour .count comme un entier pour vous assurer que les types appropriés sont comparés. Même une chaîne '-1' a une valeur de bits supérieure à zéro int.
juste une pensée, mais je peux me tromper ....