Заранее извиняюсь, я только новичок в этом поле
Я пытаюсь отправить картинку на сервер ... Сервер - 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-адреса каталога ... и многое другое со вчерашнего утра г, но не повезло ...
кто-нибудь может мне помочь разобраться в проблеме или найти правильный или лучший способ выполнить указанное задание?
Спасибо, что прочитали ...
С наилучшими пожеланиями