【发布时间】:2015-02-19 21:14:01
【问题描述】:
我尝试使用php构建一个上传图片系统,经过测试,系统回显“图片已上传”,但它没有显示在数据库中。这是我的代码在这里
上传.php
<?php
//connect database
include('config.php');
//file properties
if(isset($_FILES['image'])){
$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 "This is not an image";
}
else{
$insert = "INSERT INTO image(name,picture) VALUES ('$image_name','$image')";
if(!$insert){
echo "Problem uploading";
}
else {
$lastid =mysqli_insert_id($con);
echo "Image Uploaded <p />Your Image :<p /><img src=get.php?id=$lastid>";
}
}
}
?>
get.php
<?php
include ('config.php');
$id = addslashes($_REQUEST['id']);
$image = mysqli_query($con ,"SELECT * FROM image WHERE id=$id");
$image = mysqli_fetch_assoc($image);
$image = $image['picture'];
header("Content-type :image/jpeg");
?>
我点击提交按钮而不选择任何文件,这 2 行警告显示
警告:file_get_contents():upload.php 第 14 行中的文件名不能为空。
第 14 行是这个 $image = addlashes(file_get_contents($_FILES['image']['tmp_name']));
警告:getimagesize():upload.php 第 16 行中的文件名不能为空。
虽然第 16 行是这个 $image = addlashes(file_get_contents($_FILES['image']['tmp_name']));
对此有什么想法吗?
【问题讨论】:
-
你为什么要将图像放入数据库中?
-
@MikeBrant 你是什么意思??
-
我的意思是,一般来说,将图像存储在数据库中,而不是文件系统对图像的引用,是一种糟糕的应用程序设计。除非您对图像本身或类似的东西进行二进制搜索,否则您可能会为自己的架构不佳而苦恼。
-
@MikeBrant mike,我有任何参考来做你提到的文件系统参考吗??提供的任何参考都非常受欢迎..因为我是 php 语言的初学者..tq
-
回头看我问的问题,现在我明白你的意思了。谢谢..哈哈
标签: php mysql image file-upload upload