В части более крупного приложения мне бы хотелось, чтобы (одним нажатием кнопки, которую я сделаю позже) в моем скрипте python оно отправляло определенное изображение на сервер PHP (postgresql), доступный с IP адрес (в демонстрационных целях это http://12.34.56.78/images/upload.php (на самом деле это другой IP).
Прямо сейчас я могу добавить изображение в свою базу данных, когда щелкну ссылку выше: она ведет меня на эту страницу см. Снимок экрана здесь для отображения с этим кодом:
<html>
<head>
</head>
<body style="border:2px solid Black; padding: 20px; border-radius: 8px; background-color: Teal;">
<center>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="upload" />
<br/><br/>
<input type="submit" name="submit" value="upload">
<br/><br/>
<?php
echo '<a href = "http://' . $_SERVER['SERVER_NAME'] . '/images/list.php">Return to the Index.</a>';
?>
</form>
</center>
</body>
Однако, как сказано выше, вместо того, чтобы вручную выбирать файл и нажимать кнопку загрузки, я хочу, чтобы мой скрипт на python автоматически загружал изображение в мою базу данных.
Итак, на данный момент это мой файл с питоном:
import requests
url = 'http://12.34.56.78/images/upload.php'
files = {'file': open('The_Great_Archiver.png', 'rb')}
r = requests.post(url, files=files)
Мой текущий скрипт .php для загрузки изображения:
<?php
include "include/connect.php";
if(isset($_POST['submit']))
{
$ip = $_SERVER['SERVER_NAME'];
$filename = $_FILES['upload']['name'];
$filetmp = $_FILES['upload']['tmp_name'];
$filebase = basename($_FILES['upload']['name']);
$len = strlen($filebase);
$arr1 = str_split($filebase, 1);
$finalfilebase = "";
$filetypes = array('png','jpg','gif');
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if (!in_array($ext,$filetypes)){
echo 'File Type Invalid. Try Again With An Allowed File Type. <br>';
}
else {
echo 'File Scan Valid';
}
for ($i = 0; $i <= $len - 1; $i++){
if (" " == $arr1[$i] || "?" == $arr1[$i] || "!" == $arr1[$i]){
$arr1[$i] = "_";
echo "/!\ Had to modify file name for database.";
}
$finalfilebase = $finalfilebase . $arr1[$i];
}
echo "<br><br>";
$dir = "uploads/";
$final_dir = $dir.$finalfilebase;
if(in_array($ext,$filetypes) && move_uploaded_file($filetmp , $final_dir))
{
echo "Uploading Successful <br><br>";
$size = getimagesize($final_dir);
$img_basename = pathinfo($final_dir, PATHINFO_FILENAME);
$crop_name = $finalfilebase."_crop";
$ratio = $size[0]/$size[1]; #Width / Height
if ($ratio > 1) {
$width = 100*$ratio;
$height = "100";
}
else {
$width = 100*$ratio;
$height = "100";
}
$src = imagecreatefromstring(file_get_contents($final_dir));
$dst = imagecreatetruecolor($width, $height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
if ($ext = "png") {
$dst_addr = "previews/$crop_name.png";
imagepng($dst,$dst_addr);
echo "$dst_addr<br><br>";
}
elseif ($ext = "jpg") {
$dst_addr = "previews/$crop_name.jpg";
imagejpeg($dst,$dst_addr);
}
else {
echo "RESIZE ERROR: $finalfilebase";
}
#Insert into database
$query = pg_query($dbh , "INSERT INTO image_name (file_name , file_path, pre_path) VALUES ('$finalfilebase' , '$final_dir' , '$dst_addr')");
if ($query)
{
echo "Image Inserted <br><br>";
echo '<a href = "http://' . "$ip" . '/images/list.php">Go To Index.</a><br>';
echo '<a href = "http://' . "$ip" . '/images/img_upload_form.php">Insert Another Image.</a>';
}
else
{
echo "Insertion Failed <br><br>";
echo '<a href = "http://' . "$ip" . '/images/list.php">Return To The Index.</a><br>';
echo '<a href = "http://' . "$ip" . '/images/img_upload_form.php">Try Again.</a>';
}
}
else
{
echo "Error While Uploading. Check If Host Is Running. <br><br>";
echo '<a href = "http://';
echo "$ip";
echo '/images/list.php">Go To Index.</a>';
}
}
else
{
echo "Some Error Occurred. Check Code.";
#echo '<a href ="localhost"></a>';
}
?>
<html>
<body style="border:2px solid Black; padding: 20px; border-radius: 8px; background-color: Teal; margin: 50px 100px 50px 100px;">
</body>
</html>
Однако, когда я выполняю код на python, он на мгновение загружается, а затем выполняется, но в моей базе данных ничего не добавляется.
Что я должен изменить, чтобы мой скрипт Python автоматически загружал изображение правильно, где другие изображения уже сохранены?
Кстати, вот скриншот того, как в базе данных отображается изображение, которое я уже загрузил: нажмите здесь
Спасибо за вашу помощь!