L'élément unique contient une valeur nulle à l'intérieur de IEnumerable(Of HttpPostedFileBase)
lorsque l'envoi de formulaire sans téléchargement de fichiers peut être retracé par les en-têtes de demande HTTP POST du navigateur, ce qui indique que ce comportement est inhérent.
Ceci est un exemple de requête POST pour une page contient l'entrée de fichiers avec de multiples téléchargement activé (certaines pièces non pertinentes retirées par souci de concision):
Hôte: "localhost: [port]"
utilisateur- Agent: "Mozilla/5.0 (Windows NT 6.1; rv: 54,0) Gecko/20100101 Firefox/54,0"
Accepter: « text/html, application/xhtml + xml, application/xml; q = 0,9, /; q = 0,8 "
Accept-Language: "en-US, en; q = 0.5"
Accept-Encoding: "gzip, dégonfler"
Content-Type: « multipart/form-data; limite = --------------------------- 17618158692582"
Referer: "http://localhost:[port]/Example/Upload"
Connection: « keep- vivant »
Et ce que je reçois dans la section paramètres (avis paramètre de nom de fichier vide en gras):
------------------ ----------- 17618158692582
Content-Disposition: données de formulaire; name = "Pièces jointes"; filename = ""
Content-Type: application/octet-stream
La valeur vide du paramètre filename
devient raison pour laquelle IEnumerable(Of HttpPostedFileBase)
contient un objet unique qui stocke Nothing
(null) Valeur & Count
résultat de la collection renvoie 1, même valeur que la propriété Request.Files.Count
.
Voici les conditions d'essai:
Dim fileCount As Integer = model.Attachments.Count() 'returns 1
Dim firstFile As HttpPostedFileBase = model.Attachments.First() 'returns Nothing
Dim requestCount As Integer = Request.Files.Count 'returns 1
Notez qu'il n'y a pas d'autre moyen de supprimer le paramètre filename
sur la tête Content-Disposition
(de sorte qu'il est impossible de vider HttpPostedFileBase
collection sur le formulaire soumettre), mais vous pouvez vérifier si la collection état a Nothing
valeur en utilisant model.Attachments.First
, ou en utilisant pour-chaque boucle comme ceci:
If model.Attachments.Any() Then
For Each file As HttpPostedFileBase In model.Attachments
If file IsNot Nothing Then
' do something
Else
' other stuff
End If
Next
End If
Référence:
ASP.NET MVC – Multiple Files Upload Bug or by-design issue?