Python отправляет изображение в PHP скрипт на сервере с помощью Post, изображение приходит, но повреждено и меньше, чем должно быть - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь использовать свой сервер Ubuntu для запуска некоторого измерительного кода на изображении, которое я не могу запустить локально (это проблема Windows).

Локальный скрипт написан на python3, который отправляетизображение для сценария php на сервере.

Изображение отображается на стороне сервера с правильным именем, но когда я его открываю, linux mint сообщает мне «Неустранимая ошибка чтения файла изображения PNG: не файл PNG».

Исходное изображение имеет размер более 200 КБ, а полученное изображение сайта сервера составляет всего 40 байт, поэтому выглядит так, как будто оно повреждено или получено не все.

Я сейчас нахожусь6 пытаясь заставить это работать, просмотрели десятки учебных пособий и подобных примеров здесь на stackoverflow.Я готов признать сейчас, что я должен что-то упустить.Любая помощь будет принята с благодарностью.

Если я повторю "file_get_contents ('php: // input');"на стороне php-сервера он выплевывает «file =% 3C_io.BufferedReader + name% 3D% 271.png% 27% 3».Не уверен, что это поможет.

Локальный скрипт Python3

import urllib.request, urllib.parse
import requests

url = 'http://165.227.207.246/returnState.php'

data = {
'file': open('1.png', 'rb')
}

opener = urllib.request.build_opener()
opener.addheaders = [('Content-Type', 'image/png')]
urllib.request.install_opener(opener)

data = bytes( urllib.parse.urlencode( data ).encode() )
handler = urllib.request.urlopen( url, data );
print( handler.read().decode( 'utf-8' ) );

Сценарий получения PHP

file_put_contents("/var/www/html/screens/1.png", 

file_get_contents('php://input'));

#move_uploaded_file($uploadfile,'var/www/html');

var_dump($_FILES);

echo 'DONE';
...