[英]How to save image to SQLite Database in android?
在MySQL Database
我有一个包含name and image
的表。 我想将这些详细信息输入android。
我使用PHP
从Database
获取数据。
我的PHP code
:
<?php
$db_host = $_POST['db_host'];
$db_uname = $_POST['db_user_name'];
$db_password = $_POST['db_password'];
$conn = mysql_connect($db_host, $db_uname, $db_password);
$query = $_POST['query'];
$db_name = $_POST['db_name'];
mysql_select_db($db_name);
$result_set = mysql_query($query, $conn);
while($row = mysql_fetch_array($result_set)) {
print "name:{$row['name']},image:" . base64_decode($row['image']) . ";
}
mysql_close($conn);
?>
我得到的name
很完美,并且image
格式如下
LzlqLzRBQVFTa1pKUmdBQkFnRUFZQUJnQUFELzdnQU9RV1J2WW1VQVpBQUFBQUFCLytFVFhVVjRhV1lBQUUxTkFDb0FBQUFJQUFjQk1nQUNBQUFBRkFBQUFHSUJPd0FDQUFBQUJ3QUFBSFpIUmdBREFBQUFBUUFFQUFCSFNRQURBQUFBQVFBL0FBQ2NuUU
上面显示的格式仅作为示例。
我作为图像获取的字符串使用ContentValues
保存到SQLite Database
。
现在,我需要在Android屏幕上显示保存在SQLite
的image
。
我的代码是这样的:
ByteArrayInputStream input_stream = new ByteArrayInputStream(moviesList.get(i).getMovieImage());
Bitmap bitmap = BitmapFactory.decodeStream(input_stream);
movie_image.setImageBitmap(bitmap);
但是我无法获得图像?
请帮我解决这个问题。 谢谢
UPDATE
我不从事Android开发,但是就PHP部分而言:
<?php
// config.php
$db_host ='';
$db_uname = '';
$db_password = '';
$db_name = '';
$api_key = 'HERE_WE_DEFINE_A_SECRET_KEY';
?>
<?php
// file you're calling
require_once 'path/to/config.php';
$conn = mysql_connect($db_host, $db_uname, $db_password);
# check if your receiving a post call
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if($_POST['api_key'] !== $api_key)
{
echo 'No access';
exit(1);
}
switch($_POST['command'])
{
// this is how you call a certain action
case 'GET_IMAGE':
// Do the stuff you want to do.
require_once 'path/to/getImage.php';
break;
default:
// If no command is specified
break;
}
}
?>
<?php
// getImage.php
if(!$conn)
{
echo 'No connection';
exit(1);
}
// sanitize input
if(!isset($_GET['id']) || !is_numeric($_GET['id']))
{
echo 'Invalid ID';
exit(1);
}
$image_id = $_GET['id'];
$query="SELECT * FROM images WHERE id = {$image_id}";
$result_set = mysql_query($query, $conn);
while($row = mysql_fetch_array($result_set))
{
echo "name:{$row['name']},image:" . base64_decode($row['image']) ;
}
?>
现在,如果我们调用该url,就可以开展业务-而且我们很安全!
yourhost.com/yourfile.php?api_key=HERE_WE_DEFINE_A_SECRET_KEY&command=GET_IMAGE&id=3
原始帖子在上面的php示例中,您遇到了解析错误。
print "name:{$row['name']},image:" . base64_decode($row['image']) . ";
在分号之前需要额外的“”。
print "name:{$row['name']},image:" . base64_decode($row['image']) . "";
PS:有人提到过通过HTTP发送MYSQL凭据不是很安全吗? 还要_POST完成QUERIES吗?
1.)如果您正在构建应用程序,并且有人使用了WIRESHARK之类的程序,那么您将遇到很大的麻烦。
2.)您不应该这样做。 最好是在本地设置所有凭据,已准备好查询,并使用秘密密码(基本上就是API密钥)或用于检索数据的内容。
那呢?
byte[] decodedString = Base64.decode(encodedImage, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
我建议您将文件存储在光盘上,创建文件Uri并将Uri而不是图像数据存储在数据库中。
如果仍然需要存储图像数据,请查看以下答案: https : //stackoverflow.com/a/32646725/383676
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.