在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);
&GT;
我完全按原样name
和格式
image
LzlqLzRBQVFTa1pKUmdBQkFnRUFZQUJnQUFELzdnQU9RV1J2WW1VQVpBQUFBQUFCLytFVFhVVjRhV1lBQUUxTkFDb0FBQUFJQUFjQk1nQUNBQUFBRkFBQUFHSUJPd0FDQUFBQUJ3QUFBSFpIUmdBREFBQUFBUUFFQUFCSFNRQURBQUFBQVFBL0FBQ2NuUU
上面显示的格式就是一个例子。
我使用SQLite Database
将我作为图片获得的字符串保存到ContentValues
。
现在我需要在Android屏幕上显示image
中保存的SQLite
。
我的代码就像:
ByteArrayInputStream input_stream = new ByteArrayInputStream(moviesList.get(i).getMovieImage());
Bitmap bitmap = BitmapFactory.decodeStream(input_stream);
movie_image.setImageBitmap(bitmap);
但我无法获得图像?
请帮我解决这个问题。谢谢
答案 0 :(得分:0)
<强>更新强>
我不参与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']) ;
}
?>
现在,如果我们拨打网址,我们就会开展业务 - 我们就安全了!
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']) . ";
需要额外的&#34;在分号之前。
print "name:{$row['name']},image:" . base64_decode($row['image']) . "";
PS:有人提到它通过HTTP发送MYSQL凭证不是很安全吗?甚至更多,_POST完成查询?
1。)如果您构建应用程序,并且有人使用像WIRESHARK这样的程序,那么您将遇到大麻烦。
2。)你不应该这样做。更好地在本地设置所有凭据,准备好QUERIES并使用秘密密码短语(基本上是API密钥是什么)或其他东西,以便检索您的数据。
答案 1 :(得分:0)
那又怎么样?
byte[] decodedString = Base64.decode(encodedImage, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
答案 2 :(得分:0)
我建议您将文件存储在光盘上,创建文件Uri并将Uri而不是图像数据存储在数据库中。
如果您仍需要存储图像数据,请查看以下答案: https://stackoverflow.com/a/32646725/383676