recherche

Maison  >  Questions et réponses  >  le corps du texte

http - python requests post 大文件和获取进度条

准备用HTTP 在局域网内 上传一些文件,文件一般都在1G左右

r = requests.post('****',
                 data={'path':'2016/07/08/5ASD5SDFASDFASDF/cad.zip'},
                 files={'file': open(filename, 'rb')}
                 )
                     

这样上传小文件可以, 但是上传大文件时候会py会报 memeryError的内存错误。
如何解决此问题呢?

PHP中文网PHP中文网2834 Il y a quelques jours807

répondre à tous(3)je répondrai

  • 迷茫

    迷茫2017-04-17 18:03:34

    from requests_toolbelt import  *
    
    m = MultipartEncoder(fields={'file': ('filename',open(f, 'rb'))},
    
                         boundary='---------------------------7de1ae242c06ca'
                        )
    
    import time
    
    def my_callback(monitor):
        # Your callback function
        print monitor.bytes_read
    
    m = MultipartEncoderMonitor(m, my_callback)
    
    req_headers = {'Content-Type': m.content_type,
                   'path':'2016/07/09/5ASD5SDFASDFASDF/{}.zip'.format(time.time()),}
    
    r = requests.post(url, data=m, headers=req_headers)
    

    L'utilisation d'une bibliothèque d'extensions peut parfaitement résoudre deux problèmes request_toolbelt

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-17 18:03:34

    Le propriétaire de l'immeuble utilise la mise en ligne des demandes en streaming.
    Voici quelques instructions

    Téléchargements en streaming

    Requests prend en charge les téléchargements en streaming, qui vous permettent d'envoyer des flux ou des fichiers volumineux sans les lire en mémoire. Pour diffuser et télécharger, fournissez simplement un objet de type fichier pour votre corps :

    .
    with open('massive-body', 'rb') as f:
        requests.post('http://some.url/streamed', data=f)
    

    http://www.python-requests.org/en/master/user/advanced/#streaming-uploads

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-17 18:03:34

    Il est recommandé d'utiliser le module affiche
    https://atlee.ca/software/poster/

    répondre
    0
  • Annulerrépondre