当前位置: 首页 > 知识库问答 >
问题:

无法使用php上传和存储图像到数据库

王云
2023-03-14

我尝试用php建立一个上传图片系统。经过测试,系统回声“图像已上传”,但在数据库中没有显示。这是我的密码

upload.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行中的文件名不能为空。

line14是这个$Image=addslash(file_get_contents($_FILES['Image']['tmp_name']);

警告:getimagesize():upload.php第16行中的文件名不能为空。

第16行是$image=addslashes(file_get_contents($_FILES['image']['tmp_name']);

你知道吗?

共有2个答案

薛利
2023-03-14

在第16行之后,您需要回显图像数据。

回波图像;

@ken,这里有一个函数,我用它来通过设置正确的标题来输出图像:

    function output_headers($filetype, $imgsize, $filename, $attachment=false)
{
header("Content-Type: {$filetype}");
header("Pragma: public");
header("Cache-Control: public");
header("Cache-Control: must-revalidate");
$offset = 60 * 60 * 24 * 4 -1;
$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
header($ExpStr);
header("Cache-Control: max-age=$offset");
//header("Content-Type: application/octet-stream");
header('Accept-Ranges: bytes');
header("Content-Length: $imgsize");
#insert the filename we want into the image so it can be saved with something
# more meaningful that showimg.jpg. :-)
# 04/03/06
#attachment causes save as to appear, inline serves imbedded image.
if ($attachment)
    header('Content-Disposition: attachment; filename="' . $filename . '"');
else
    header('Content-Disposition: inline; filename="' . $filename . '"');
}

这是名为showimg.php.jpg的php文件的一部分

这需要与以下.htaccess文件一起保存到一个单独的目录中,以使php处理对.jpgs的请求:

AddType application/x-httpd-php .jpg

这样,网页引用图像

问候史蒂夫

丁韬
2023-03-14

您需要一个函数来发送查询,否则您只需填写一个字符串

$insert = "INSERT INTO image(name,picture) VALUES ('$image_name','$image')";

其次是:

mysqli_query($con, $insert);

这些警告是由代码的多个问题引起的。首先,您要检查文件是否以错误的方式上载:这是

if(isset($_FILES['image'])){
    $file = $_FILES['image']['tmp_name'];
}

将始终设置一个$file变量,即使表单中没有选择文件,因此永远不会执行if语句:

if(!isset($file)){
    echo "Please select an image";
}

而是始终执行else块中的内容,这会导致错误,因为您提到的包含在else块中的函数无法对任何文件进行操作。

因此,只需正确检查文件上传即可解决问题:一种方法是首先删除该文件,这是无用的

if(isset($_FILES['image'])){
    $file = $_FILES['image']['tmp_name'];
}

然后改变这个:

if(!isset($file)){
    echo "Please select an image";
}

对此:

if(!isset($_FILES['image']['tmp_name'])){
    echo "Please select an image";
}
 类似资料:
  • 问题内容: 我想将图像的下载URL放入Firebase数据库中。我可以将图像上传到存储中,但无法弄清楚如何将URL与其余的“帖子”一起放入数据库。 问题答案: 像这样组织您和func: 接下来,只需连接并保存到您的节点即可。 您也可以查看我有关上传数据并将URL保存到数据库的答案 希望能帮助到你

  • 我正在使用一个Vaadin上传组件,到目前为止,我已经成功地将一个图像上传到一个目录,并在成功上传后在面板组件中显示它。在这之后,我想做的是把它也插入到数据库中。我有一个名为Show的表,它有一个名称、日期和图像。在Show类中,我尝试将图像作为字节数组或Blob。 在上传成功的方法中,我想将文件转换为字节数组,到目前为止我已经尝试过了: 我也试过: uIP它实际上是我的上传ImagePresen

  • 问题内容: 我正在尝试上传图片以及添加细节,例如;标题,描述和文件路径到数据库表中。 我正在使用以下代码,但未将任何数据添加到数据库中; (session.php include包含数据库连接。) 表单代码; 我想知道是否有人可以告诉我可能出了什么问题? 谢谢你。 问题答案: 由于存在几个问题,此代码无法正常工作。 首先,您应在检查上传时重命名html字段之一或更改字段名称: 或者 第二,此脚本不

  • 如何从Android客户端上传图像到GAE(Google App Engine)数据存储? 尚未找到教程,已尝试了7天。

  • 我正在尝试上传图像到firebase,以及其他字符串和双数据类型。 我现在正在考虑两个选项,一个是上载imageUrl到firebase实时数据库,当我检索它时,我将检索一个imageUrl并将其转换为图像。 谢谢你的帮助!我很感激。

  • 我从Firebase存储中获取图像,用相机拍照,或者从图书馆中挑选一张。当其中一个完成时,我有一个类来存储,以便在需要时使用它。 现在我需要将此图像上传到Firebase存储(修改或新建,无所谓)。Firebase允许我使用以下选项之一:或,每个选项分别需要或。 我怎么能把我的,并从它获得一个或用于上传? -- 或者,为了解决这个问题,当我从Firebase存储中检索图像时,如何获取图像的? 无论