Отправка изображения из raspberrypi (python) в серверную часть веб-сервера (php) с использованием метода HTTP POST - PullRequest
1 голос
/ 24 января 2020

Заранее извиняюсь, я только новичок в этом поле

Я пытаюсь отправить картинку на сервер ... Сервер - PHP серверный, а устройство - raspberry pi с linux ОС, использующая python язык ...

Я много исследовал и перепробовал много кодов для указанной задачи

Серверный сценарий php -

<?php
    //if (isset($_POST['submit'])) {
        //echo "Success";
        $file = $_FILES['file'];
        print_r($file);
        $file_name = $_FILES['file']['name'];
        $filetmpname = $_FILES['file']['tmp_name'];
        $filesize = $_FILES['file']['size'];
        $fileerror = $_FILES['file']['error'];
        $filetype = $_FILES['file']['type'];

        $fileExt = explode('.', $file_name);
        $fileActualExt = strtolower(end($fileExt));

        //$allowed = array('jpg','jpeg','png', 'pdf','docx');
        //if (in_array($fileActualExt, $allowed)) {
            if ($fileerror === 0) {
                if ($filesize <1000000) {
                    $filenewname = uniqid('', true).".".$fileActualExt;
                    $fileDestination = 'pictures/'.$file_name;
                    move_uploaded_file($filetmpname, $fileDestination);
                    header("Location: upload_test.php?success");
                }else{
                    echo "File size too big!";
                }
            }else{
                echo "Error while uploading your file!";
            }
        //}
    //}
?>

, кажется, работает нормально, когда я использую кнопку отправки для отправки изображения с другой php веб-страницы. (строки, прокомментированные в приведенном выше коде, объясняются тем, что позже я хотел получить изображение без кнопки отправки, чтобы отправить его только для получения изображения с другой php веб-страницы)

Но Я хочу отправить изображение из Raspberry pi, поэтому я нашел несколько кодов для этого,

import requests
import os
path_img='/home/pi/im.jpg'
url = 'http://*******.msahosting.net/pictures/'
#url = "http://*******.msahosting.net/upload.php" #tried both url
with open(path_img, 'rb') as img:
  name_img= os.path.basename(path_img)
  files= {'file': (name_img,img,'multipart/form-data',{'Expires': '0'}) }
  with requests.Session() as s:
    r = s.post(url,files=files,data={'dir':'/pictures/'})
    print(r.status_code)

И

import requests
url='http://*******.msahosting.net/pictures/'
#url = 'http://*******.msahosting.net/upload.php' #tried both
data = {'submit':'submit','upload':''}
files = {'file':('im.jpg', open('/home/pi/im.jpg', 'rb'), 'image/jpeg')}
r = requests.post(url, data=data, files=files)
print(r)

И


import requests
url = "http://*******.msahosting.net/upload.php"

files = {'files': open('/home/pi/im.jpg', 'rb')}
headers = {
    'content-type': "multipart/form-data"
#    'accept': "application/json",
#    'apikey': "API0KEY0"
    }
response = requests.post(url, data=files, headers=headers)

print(response)

НО ни один из них не работает, все они возвращают код ошибки 200, который указывает на отсутствие ошибки, хотя, когда я проверяю response.text, я получаю что-то подобное в моем linux окне терминала

Этот сайт требует Javascript для работы, пожалуйста включите Javascript в вашем браузере или используйте браузер с поддержкой Javascript

, но так как здесь я не использую какой-либо браузер, я пытаюсь загрузить изображение с моего raspberry pi.

, поэтому, кроме этого, код ошибки 200, но в каталоге сервера нет загруженного файла

Я попытался изменить 'file' на 'image' ... изменение URL-адреса каталога ... и многое другое со вчерашнего утра г, но не повезло ...

кто-нибудь может мне помочь разобраться в проблеме или найти правильный или лучший способ выполнить указанное задание?

Спасибо, что прочитали ...

С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...