Version rapide: Les noms des paramètres de "formulaires" envoyés en utilisant le codage standard multipart/form-data doivent-ils être codés?Les noms de paramètres de formulaire doivent-ils être codés lors d'un POST?
version plus longue: Le formulaire de téléchargement sur 1fichier.com (un service pour télécharger de gros fichiers) utilise ce qui suit pour spécifier le paramètre de fichier à télécharger:
<input type="file" name="file[]" size="50" title="Select the files to upload" />
Le nom du paramètre est le fichier [] (remarquez les parenthèses). Utilisation de LiveHTTPHeaders Je vois que le paramètre est envoyé comme ceci (c'est-à-dire avec des parenthèses) lors de l'envoi du formulaire dans Firefox. Cependant, pour un program j'écris en Python, j'utilise le module poster pour pouvoir télécharger des fichiers en utilisant l'encodage standard multipart/form-data. Si j'entre le nom du paramètre avec les parenthèses, il est envoyé comme ceci:
file%5B%5D
interne, affiche encode les noms des paramètres à l'aide de cette fonction:
def encode_and_quote(data):
"""If ``data`` is unicode, return urllib.quote_plus(data.encode("utf-8"))
otherwise return urllib.quote_plus(data)"""
if data is None:
return None
if isinstance(data, unicode):
data = data.encode("utf-8")
return urllib.quote_plus(data)
La documentation urllib.quote_plus dit que ce uniquement "requis pour l'attribution de valeurs de formulaire HTML lors de la création d'une chaîne de requête à entrer dans une URL". Mais ici, nous faisons un POST, donc les valeurs du formulaire ne vont pas dans l'url.
Alors, ont-ils encore besoin d'être codés, ou est-ce une erreur de poster de le faire?
Merci, auteur;) – Emilien