J'ai un formulaire-données ainsi qu'un fichier à envoyer dans le même POST. Par exemple, {durée: 2000, fichier: test.wav}. J'ai vu les nombreux threads ici sur la publication multipart/form-data en utilisant python requêtes. Ils étaient utiles, en particulier celui-ci .
Mon exemple de demande est comme ci-dessous:
files = {'file': ('wavfile', open(filename, 'rb'))}
data = {'duration': duration}
headers = {'content-type': 'multipart/form-data'}
r = self.session.post(url, files=files, data=data, headers=headers)
Mais lorsque j'exécute le code ci-dessus, j'obtiens cette erreur:
5: 59: 55.338 Dbg 09900 [DEBUG] Résolution de l'exception du gestionnaire [null]: org.springframework.web.multipart.MultipartException: impossible d'analyser la demande de servlet en plusieurs parties; l'exception imbriquée est org.Apache.commons.fileupload.FileUploadException: la demande a été rejetée car aucune limite en plusieurs parties n'a été trouvée.
Mes questions sont donc les suivantes: 1) Comment puis-je voir le contenu de la demande envoyée? Impossible d'utiliser Wirehark, ce n'est pas sur le réseau. 2) Pourquoi la frontière manque-t-elle dans les données codées? Ai-je oublié quelque chose, veuillez le signaler.
Vous ne devez JAMAIS définir cet en-tête vous-même. Nous définissons correctement l'en-tête avec la frontière. Si vous définissez cet en-tête, nous ne le ferons pas et votre serveur ne saura pas à quelle limite s'attendre (car il est ajouté à l'en-tête). Supprimez votre en-tête Content-Type personnalisé et tout ira bien.
La suppression de l'en-tête Content-Type avec des "multipart/form-data" explicites a fonctionné!
Pour ajouter spécifiquement une limite, ajoutez ce qui suit dans l'en-tête:
headers = {
'content-type': 'multipart/form-data; boundary=ebf9f03029db4c2799ae16b5428b06bd'
}