cari

Rumah  >  Soal Jawab  >  teks badan

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 hari yang lalu806

membalas semua(3)saya akan balas

  • 迷茫

    迷茫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)
    

    Menggunakan perpustakaan sambungan boleh menyelesaikan dua masalah dengan sempurna requests_toolbelt

    balas
    0
  • PHP中文网

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

    Pemilik bangunan menggunakan muat naik penstriman permintaan.
    Berikut ialah beberapa arahan

    Muat Naik Penstriman

    Permintaan menyokong muat naik penstriman, yang membolehkan anda menghantar strim atau fail besar tanpa membacanya ke dalam memori Untuk menstrim dan memuat naik, cuma sediakan objek seperti fail untuk badan anda:

    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

    balas
    0
  • 天蓬老师

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

    Adalah disyorkan agar anda menggunakan modul poster
    https://atlee.ca/software/poster/

    balas
    0
  • Batalbalas