我正在开发一个Android应用程序,允许用户将其图像从Android上载到000webhost服务器,通过参考this link,我已经成功地将图像发送到了Web服务器(文件管理器?)。
但是,我想将图像发送到服务器的数据库,但是我一直面临将图像插入数据库的问题,以下是我正在使用的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);
?>
我的名为images的数据库有3列:
id INT(100) AUTO_INCREMENT PRIMARY KEY
bitmap TEXT
name VARCHAR(100)
我尝试过将文件名更早地传递到数据库中并且可以正常工作,所以我怀疑位图的数据类型错误。
还是我应该将图像的路径保留在Web服务器中,而不是将图像传递到数据库中?
编辑: 我摆脱了if else语句,只将文件名保存到数据库中,将图像保存到服务器。为了进行检索,我定义了保存图像的文件夹的路径,并使用readfile()通过来自here的HTTPUrlConnection将图像发送回Android。
答案 0 :(得分:0)
您可以将文件保存在服务器中,并将文件名保留在DB中是首选解决方案。每个服务器都有上传限制。您可以通过编辑服务器配置或使用php ini_set来增加。