В Python как получить и сохранить изображение в HTTP пост-запросе без использования запросов и других библиотек, которые не установлены в Python - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь получить изображение из HTTP-запроса post в python. Я использую BaseHTTPHolder и функцию do_POST (). Я пытаюсь получить изображение с адреса localhost http: 127.0.0.1: 8080 / photo при работе сервера на localhost. Я попытался использовать код ниже, он сохраняет фотографию, но не позволяет открыть, потому что фотография не получена полностью

img = urllib2.urlopen('http://127.0.0.1:8080/photo').read()
content_length = int(self.headers.getheader('content-length',0))
file_content = self.rfile.read(content_length)
with open('/Users/kasymhan/Desktop/sprint2/file01.jpg','wb') as s:
        s.write(file_content)

EDIT Моя функция do_POST ()

def do_POST(self):
            url = 'http://127.0.0.1:8080/photo/file02.jpg'
            request_headers = self.headers
            content_length = request_headers.getheaders('content-length')
            length = int(content_length[0]) if content_length else 0
            file_content = self.rfile.read(length) 
            img = urllib2.urlopen(url).read()
            with open('/Users/kasymhan/Desktop/sprint2/image.jpg','wb') as s:
                s.write(img)

1 Ответ

0 голосов
/ 13 ноября 2018

Почему бы напрямую не записать содержимое изображения в выходной файл:

import urllib2

url = "http://farm5.static.flickr.com/4105/5063092779_17b2133825_b.jpg"

img = urllib2.urlopen(url).read()
with open('./image.jpg','wb') as s:
    s.write(img)
...