Bug #12793
NoReverseMatch at / pour les noms de fichiers contenant des /
Statut:
Fermé
Priorité:
Normal
Assigné à:
Josué Kouka
Version cible:
-
Début:
29 juillet 2016
Echéance:
% réalisé:
100%
Temps estimé:
Patch proposed:
Oui
Planning:
Description
Reverse for 'download' with arguments '()' and keyword arguments '{'pk': 94, 'filename': u'Courrier r\xe9ponse 27/07/2016.pdf'}' not found. 1 pattern(s) tried: ['(?P<pk>\\d+)/download/(?P<filename>[^/]*)$'] Request Method: GET Request URL: https://porte-doc2016.alfortville.fr/ Django Version: 1.7.7 Exception Type: NoReverseMatch Exception Value: Reverse for 'download' with arguments '()' and keyword arguments '{'pk': 94, 'filename': u'Courrier r\xe9ponse 27/07/2016.pdf'}' not found. 1 pattern(s) tried: ['(?P<pk>\\d+)/download/(?P<filename>[^/]*)$'] Exception Location: /usr/lib/python2.7/dist-packages/django/core/urlresolvers.py in _reverse_with_prefix, line 468 Python Executable: /usr/bin/python Python Version: 2.7.3 Python Path: ['/', '/usr/bin', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/pymodules/python2.7'] Server time: mer, 27 Jul 2016 11:40:32 +0200 Error during template rendering
Fichiers
Révisions associées
Historique
Mis à jour par Josué Kouka il y a plus de 7 ans
- Fichier 0001-replace-slashes-by-hyphen-in-filename.patch 0001-replace-slashes-by-hyphen-in-filename.patch ajouté
- Patch proposed changé de Non à Oui
L'erreur n'apparait qu'en utilisant l'api.
Je ne sais pas si sur windows un fichier peut avoir des '/', si c'est le cas et qu'il est uploadé, le nom est tronqué i.e myfile 17/08/2016.txt
devient 2016.txt
(comportement par défaut de django)
Mis à jour par Frédéric Péters il y a plus de 7 ans
La correction serait plutôt d'urlencoder correctement le nom de fichier, il me semble.
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
Yep, il faudrait passer filename au template en faisant un urllib.quote(filename, '') dessus, ça peut-être une simple property sur l'objet UserDocument; ça n'a rien à voir avec l'API.
Mis à jour par Josué Kouka il y a plus de 7 ans
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
Dans le test il manque la validation qu'un get sur /download fonctionne.
Mis à jour par Josué Kouka il y a plus de 7 ans
Mis à jour par Serghei Mihai il y a plus de 7 ans
Tu pourrais utiliser la fonction quote
de django.utils.http
Mis à jour par Josué Kouka il y a plus de 7 ans
Mis à jour par Josué Kouka il y a plus de 7 ans
- Statut changé de En cours à Résolu (à déployer)
- % réalisé changé de 0 à 100
Mis à jour par Benjamin Dauvergne il y a presque 7 ans
- Statut changé de Résolu (à déployer) à Fermé
url encode filenames (#12793)