将图像从Android上传到网络服务器

时间:2018-10-10 10:48:33

标签: php database

我正在开发一个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。

1 个答案:

答案 0 :(得分:0)

您可以将文件保存在服务器中,并将文件名保留在DB中是首选解决方案。每个服务器都有上传限制。您可以通过编辑服务器配置或使用php ini_set来增加。