Я занимаюсь разработкой приложения для Android, которое позволяет пользователю загружать изображения со своего Android на сервер 000webhost. По ссылке по этой ссылке мне удалось успешно отправить изображение на веб-сервер (файлmanager?).
Однако я хотел бы вместо этого отправить изображение в базу данных сервера, но у меня возникла проблема с вставкой изображения в базу данных, ниже приведен код PHP, который я использую:
<?php
include 'connection.php';
$con = mysqli_connect($hostname_localhost, $username_localhost, $password_localhost, $database_localhost);
if (mysqli_connect_error()){
echo 'Error: Connection failed.';
exit();
}
// Get image string posted from Android App
$base=$_REQUEST['image'];
// Get file name posted from Android App
$filename = $_REQUEST['filename'];
// Decode Image
$binary=base64_decode($base);
header('Content-Type: bitmap; charset=utf-8');
$sql = "INSERT INTO images (bitmap, name) VALUES ('$binary', '$filename')";
//mysqli_query($con, $sql)
if ($con->query($sql) === TRUE) {
echo 'Success';
} else {
// Images will be saved under 'upload' folder
$file = fopen('upload/'.$filename, 'wb');
// Create File
fwrite($file, $binary);
fclose($file);
echo 'Image upload complete, Please check your php file directory';
}
mysqli_close($con);
?>
Моя база данных с именами изображений имеет 3 столбца:
id INT(100) AUTO_INCREMENT PRIMARY KEY
bitmap TEXT
name VARCHAR(100)
Я пытался передать только имя файла в базу данных ранее, и это сработало, поэтому я подозреваюневерный тип данных для растрового изображения.
Или я должен вместо того, чтобы передавать изображение в базу данных, вместо этого сохранять путь к изображению на веб-сервере?
РЕДАКТИРОВАТЬ: я избавился от оператора if else и сохранил только имя файла в базе данных, изображение сохраняется на сервере.Для поиска я определил путь к папке, в которой хранятся изображения, и использовал readfile (), чтобы отправить изображение обратно в Android, используя HTTPUrlConnection из здесь .