第一次使用堆栈溢出。
我已经按照以下2部分关于在MYSQL数据库中上传/存储图像的youtube教程。我按照说明操作,但我的图像没有显示给我。我使用connect.php连接到数据库,这似乎工作正常。似乎问题在于get.php,因为当我测试回显来自它的任何图像时,我总是得不到图像。 使用phpmyadmin创建数据库并使用xampp。
这是指向youtube教程的链接
http://www.youtube.com/watch?v=CxY3FR9doHI
http://www.youtube.com/watch?v=vFZfJZ_WNC4&feature=fvwrel
包含文件
<html>
<head>
<title>Upload an image</title>
</head>
<body>
<form action="index.php" method="POST" enctype="multipart/form-data">
File:
<input type="file" name="image"> <input type="submit" value="Upload">
</form>
<?php
include 'connect.php';
//file properties
$file = $_FILES['image']['tmp_name'];
if(!isset($file))
echo "Please select an image.";
else{
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name=addslashes($_FILES['image']['name']);
$image_size = getimagesize($_FILES['image']['tmp_name']);
if ($image_size==FALSE)
echo "That's not an image.";
else{
if(!$insert = mysql_query("INSERT INTO store VALUES('','$image_name','$image')"))
echo"Problem uploading image";
else{
$lastid = mysql_insert_id();
echo "image uploaded.<p />your image:<p /><img src=get.php?id=$lastid>";
}
}
}
?>
</body>
</html>
这是get.php
<?php
include 'connect.php';
$id=stripslashes($_REQUEST('id'));
$image = mysql_query("SELECT * FROM store WHERE id=$id");
$image = mysql_fetch_assoc($image);
$image=$image('image');
header("content-type: image/jpeg");
?>
最后连接
<?php
// connect to database
$db_host="localhost";
$db_username="root";
$db_pass="";
$db_name="test";
@mysql_connect("$db_host","$db_username","$db_pass") or die("Could not connect to mysql");
mysql_select_db("$db_name")or die("Cant find database");
?>
答案 0 :(得分:4)
get.php
echo $image
没有$image=$image('image');
另外,$image=$image['image'];
应为$_REQUEST('id')
,$_REQUEST['id']
应为addslashes
。
P.S。不要使用{{1}}来防止SQL注入。使用mysql_real_escape_string
。
答案 1 :(得分:1)
你永远不会在get.php中回显图像数据,所以你要提供一个空白的0字节图像。
答案 2 :(得分:1)
标题输出后缺少一行
header("content-type: image/jpeg");
echo $image;
答案 3 :(得分:0)
快速一瞥,在get.php改变:
$image=$image('image');
到
$image=$image['image'];
mysql_fetch_assoc()将结果转换为数组。
答案 4 :(得分:0)
你最好使用bas64_encoding解码方式,这样任何人都不会产生问题。
base64_encode(file_get_contents($_FILES['image']['tmp_name']));
这是错误的,因为数组是[]不是() 包括'connect.php';
$id=stripslashes($_REQUEST('id'));
$image = mysql_query("SELECT * FROM store WHERE id=$id");
$image = mysql_fetch_assoc($image);
$image=$image['image'];
header("content-type: image/jpeg");
echo base64_decode($image);
答案 5 :(得分:-2)
我在我的网站上使用的一段代码:
<?php
ob_start();
require_once("db.php.lib");
DBLogin();
$sql = "select pic_user_id, pic_full_data as bindata, pic_full_mime as mime, pic_full_size as size from pics where pic_name = '".urldecode($_GET["pic_name"])."'";
$result = DBExec($sql);
if ($result)
{
$row = DBGetNextRow($result);
if ($row)
{
header("Content-type: ".$row["mime"]);
header("Content-length: ".$row["size"]);
ob_clean();
echo $row["bindata"];
ob_end_flush();
}
}
?>
看起来你要省略图像数据的实际输出,某些浏览器可能需要长度......