Projet

Général

Profil

Bug #12793

NoReverseMatch at / pour les noms de fichiers contenant des /

Ajouté par Josué Kouka il y a plus de 7 ans. Mis à jour il y a presque 7 ans.

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

Révision 7a85464a (diff)
Ajouté par Josué Kouka il y a plus de 7 ans

url encode filenames (#12793)

Historique

#1

Mis à jour par Josué Kouka il y a plus de 7 ans

  • Statut changé de Nouveau à En cours
#2

Mis à jour par Josué Kouka il y a plus de 7 ans

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)

#3

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.

#4

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.

#6

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.

#8

Mis à jour par Serghei Mihai il y a plus de 7 ans

Tu pourrais utiliser la fonction quote de django.utils.http

#10

Mis à jour par Benjamin Dauvergne il y a plus de 7 ans

Ack.

#11

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
#12

Mis à jour par Benjamin Dauvergne il y a presque 7 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF