IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Upload de fichiers avec le paquetage 'request'


Sujet :

Réseau/Web Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Mars 2016
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Upload de fichiers avec le paquetage 'request'
    Bonjour,

    Je suis entrain de développer un script python 3 envoyant un fichier zip de 100 Mo par HTTP à l'aide du paquetage requests.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/usr/local/bin/python3 -u
     
    import requests
     
    email="user@srv.fr"
     
    try:
        res = requests.post('http://server/Upload/upload.php',
                            files={'aFile': open('/tmp/test.zip','rb')},
                            data={'email': email, 'submitFile': 'Envoyer le fichier'})
     
    except requests.exceptions.Timeout:
        print('timeout')
     
    print(res.content)
    A l’exécution mon script me retourne l'erreur suivante : ConnectionResetError: [Errno 104] Connection reset by peer

    Voici la trace compléte de l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    Traceback (most recent call last):
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
    ine 594, in urlopen
        chunked=chunked)
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
    ine 391, in _make_request
        six.raise_from(e, None)
      File "<string>", line 2, in raise_from
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
    ine 387, in _make_request
        httplib_response = conn.getresponse()
      File "/usr/local/lib/python3.5/http/client.py", line 1197, in getresponse
        response.begin()
      File "/usr/local/lib/python3.5/http/client.py", line 297, in begin
        version, status, reason = self._read_status()
      File "/usr/local/lib/python3.5/http/client.py", line 258, in _read_status
        line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
      File "/usr/local/lib/python3.5/socket.py", line 575, in readinto
        return self._sock.recv_into(b)
    ConnectionResetError: [Errno 104] Connection reset by peer
     
    During handling of the above exception, another exception occurred:
     
    Traceback (most recent call last):
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/adapters.py", line 423, in send
        timeout=timeout
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
    ine 643, in urlopen
        _stacktrace=sys.exc_info()[2])
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/util/retry.py", line
    334, in increment
        raise six.reraise(type(error), error, _stacktrace)
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/packages/six.py", lin
    e 685, in reraise
        raise value.with_traceback(tb)
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
    ine 594, in urlopen
        chunked=chunked)
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
    ine 391, in _make_request
        six.raise_from(e, None)
      File "<string>", line 2, in raise_from
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
    ine 387, in _make_request
        httplib_response = conn.getresponse()
      File "/usr/local/lib/python3.5/http/client.py", line 1197, in getresponse
        response.begin()
      File "/usr/local/lib/python3.5/http/client.py", line 297, in begin
        version, status, reason = self._read_status()
      File "/usr/local/lib/python3.5/http/client.py", line 258, in _read_status
        line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
      File "/usr/local/lib/python3.5/socket.py", line 575, in readinto
        return self._sock.recv_into(b)
    requests.packages.urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset
    by peer'))
     
    During handling of the above exception, another exception occurred:
     
    Traceback (most recent call last):
      File "post.py", line 10, in <module>
        data={'email': email, 'submitFile': 'Envoyer le fichier'})
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/api.py", line 110, in post
        return request('post', url, data=data, json=json, **kwargs)
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/api.py", line 56, in request
        return session.request(method=method, url=url, **kwargs)
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/sessions.py", line 488, in request
        resp = self.send(prep, **send_kwargs)
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/sessions.py", line 609, in send
        r = adapter.send(request, **kwargs)
      File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/adapters.py", line 473, in send
        raise ConnectionError(err, request=request)
    requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

    L'envoi du même fichier vers le même serveur à l'aide l’outil curl exécuté grâce a cette commande depuis un terminal fonctionne correctement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl --form aFile=@"/tmp/test.zip" --form email="user@srv.fr" --form submitFile="Envoyer le fichier" http://server/Upload/upload.php
    Mon utilisation du paquetage requests me semble bonne.

    Quelqu'un aurait-il une idée de l'origine de ce problème ?

    Cordialement,

    flo84316

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par flo84316 Voir le message
    L'envoi du même fichier vers le même serveur à l'aide l’outil curl exécuté depuis un terminal fonctionne correctement.
    Postez la commande curl qui fonctionne...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Mars 2016
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Postez la commande curl qui fonctionne...
    Désolé de cette omissions, je viens d’édité mon poste.

    Cordialement,

    flo84316

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Ben, je ne sais pas
    Le fait est que "curl" et "requests" vont fabriquer des entêtes et encodages différents qui expliquent sans doute cela. Il faudrait voir ce qu'ils sont avec un outil comme Wireshark (ou en regardant dans les log du serveur).
    Mais avant de vous lancer la dedans, vérifiez qu'un truc "simple" comme files = { 'file': ('text.txt', '1234\n5678\n') }.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. download et upload des fichier avec JSP & mysql
    Par MSM_007 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 17/07/2006, 15h20
  2. Upload de fichier avec jsp
    Par fx2024 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/06/2006, 17h02
  3. Réponses: 3
    Dernier message: 08/05/2006, 23h31
  4. [Upload] Upload de fichier avec un script PHP
    Par largolgd dans le forum Langage
    Réponses: 7
    Dernier message: 23/04/2006, 15h21
  5. Upload de fichier avec variable passée en paramètre
    Par reservoirdev dans le forum ASP
    Réponses: 2
    Dernier message: 22/04/2006, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo