我尝试使用路径从数据库上传和获取图片。上传过程完美运行。但是,我无法从db获取图像。我试过了print_r($row['image']);
。我正在获得这样的路径C:/xampp/htdocs/xampp/htdocs/www/images/0d13808ad672c2713d306efbb0e42918
。我不知道为什么这段代码不能从db中获取图像?
fetch.php
<?php
include('config.php');
ini_set('display_startup_errors',1); a
ini_set('display_errors',1);
error_reporting(-1);
try
{
$stmt = $conn->prepare("SELECT * FROM imgdb WHERE id = 3");
$conn->errorInfo();
// $stmt->bindParam('1', $imgid, PDO::PARAM_INT);
$stmt->execute();
// $path = "/xampp/htdocs/www/images/";
// $imgpath = $_SERVER['DOCUMENT_ROOT'].$path;
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo "<img src=".$row['image']." height='100' width='100'/>";
print_r($row['image']);
}
}
catch (PDOException $e)
{
echo 'Database Error'.$e->getMessage();
}
?>
upload.php的
<?php
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);
include('config.php');
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
// echo "Upload: " . $_FILES["file"]["name"] . "<br>";
// echo "Type: " . $_FILES["file"]["type"] . "<br>";
// echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
// echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
$filename = basename($_FILES['file']['tmp_name']);
$newname = md5($filename);
$final_save_dir = '/xampp/htdocs/www/images/'.$newname ;
if(move_uploaded_file($_FILES['file']['tmp_name'], $final_save_dir . $_FILES['file']['name']))
{
echo "Uploaded";
}
else
{
echo "File was not uploaded";
}
$imgid = $_SERVER['DOCUMENT_ROOT'].$final_save_dir;
try
{
$stmt = $conn->prepare("INSERT INTO imgdb ( image ) VALUES ( ? ) ");
$stmt->bindParam('1', $imgid, PDO::PARAM_STR);
$conn->errorInfo();
$stmt->execute();
}
catch (PDOException $e)
{
echo 'Database Error'.$e->getMessage();
}
?>
答案 0 :(得分:1)
试试这个并与你的比较,我不知道它是否有效,因为我没有经过测试,但它应该。
upload.php的
include('config.php');
if ($_FILES["file"]["error"] > 0 )
{
echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
$filename = basename($_FILES['file']['tmp_name']);
$ext = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
$new_file_name = md5($filename).'.'.$ext;
$final_save_dir = $_SERVER['DOCUMENT_ROOT'].DS.'www'.DS.'images'.DS;
if(move_uploaded_file($_FILES['file']['tmp_name'], $final_save_dir . $new_file_name))
{
echo "Uploaded";
}
else
{
echo "File was not uploaded";
}
try
{
$stmt = $conn->prepare("INSERT INTO imgdb ( image ) VALUES ( ? ) ");
$stmt->bindParam('1', $new_file_name, PDO::PARAM_STR);
$conn->errorInfo();
$stmt->execute();
}
catch (PDOException $e)
{
echo 'Database Error'.$e->getMessage();
}
}
fetch.php
<?php
include('config.php');
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);
try
{
$stmt = $conn->prepare("SELECT * FROM imgdb WHERE id = 3");
$conn->errorInfo();
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo "<img src='images/".$row['image']."' height='100' width='100'/>";
}
}
catch (PDOException $e)
{
echo 'Database Error'.$e->getMessage();
}
答案 1 :(得分:0)
链接图像时,必须链接到HTTP可访问路径。 使用&#39; /&#39;而不是$ _SERVER [&#39; DOCUMENT_ROOT&#39;]来获得相对于您网页的网络根目录的路径,或者&#39; http://&#39; 。 $ _SERVER [&#39; HTTP_HOST&#39;]。 &#39; /&#39; (第一个更好,因为协议没有定义,所以它可以在http和https连接上工作)
答案 2 :(得分:0)
两件事
move_uploaded_file($_FILES['file']['tmp_name'], $final_save_dir . $_FILES['file']['name'])
将文件从临时位置移动到$final_save_dir.$_FILES['file']['name']
,这与您在数据库$_SERVER['DOCUMENT_ROOT'].$final_save_dir
中存储的值不同。您需要同步这两个变量。
就像@mrgeek指出的那样,你试图使用不使用http url的绝对文件系统路径来检索图像。如果您使用的是文件系统路径,则需要在该位置前加file:///
。但我确信这将被托管在某个地方,所以这无济于事。所以最好的办法是使用相对网址,以便浏览器能够访问它
答案 3 :(得分:0)
一直尝试使用此代码从我的数据库中检索图像,但它只显示一个空白页面。需要帮忙
$user="root";
$host="localhost";
$pass="name";
$db="name";
$link=mysql_connect($host,$user,$pass);
if(!$link)die(mysql_error());
mysql_select_db($db,$link) or die("could not select database.");
$query_image = "SELECT * FROM img WHERE id=12";
// This query will show you all images if you want to see only one image pass acc_id='$id' e.g. "SELECT * FROM acc_images acc_id='$id'".
$result = mysql_query($query_image);
if(mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_array($result))
{
echo '<img alt="" src="upload/'.$row["img_base_name"].'">';
}
}
else
{
echo 'File name not found in database';
}
?>