1472 votes

application/x-www-form-urlencoded ou multipart/form-data ?

Dans le protocole HTTP, il existe deux façons de transférer des données : application/x-www-form-urlencoded y multipart/form-data . Je comprends que la plupart des navigateurs ne sont capables de télécharger des fichiers que si multipart/form-data est utilisé. Existe-t-il des indications supplémentaires concernant l'utilisation d'un des types d'encodage dans un contexte d'API (sans navigateur impliqué) ? Cela pourrait, par exemple, être basé sur :

  • taille des données
  • existence de caractères non ASCII
  • existence sur des données binaires (non codées)
  • la nécessité de transférer des données supplémentaires (comme le nom du fichier)

Jusqu'à présent, je n'ai trouvé aucune orientation formelle sur le web concernant l'utilisation des différents types de contenu.

90 votes

Il convient de préciser que ce sont les deux types MIME utilisés par les formulaires HTML. HTTP lui-même n'a aucune limitation de ce type... on peut utiliser le type MIME que l'on veut via HTTP.

1voto

jahansha Points 91

Si vous devez utiliser Content-Type=x-www-urlencoded-form, n'utilisez PAS FormDataCollection comme paramètre : Dans asp.net Core 2+, FormDataCollection n'a pas de constructeurs par défaut, ce qui est requis par les Formatters. Utilisez IFormCollection à la place :

 public IActionResult Search([FromForm]IFormCollection type)
    {
        return Ok();
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X