【问题标题】:Uploading An Image To A MySQL Database Using A Blob使用 Blob 将图像上传到 MySQL 数据库
【发布时间】:2016-05-26 20:20:00
【问题描述】:

首先澄清一下,我知道有更好的方法可以做到这一点,但我决心尝试一下。

基本上,我正在尝试从表单帖子中获取图像,然后将其发送到数据库 MEDIUMBLOB 字段中。

不幸的是,使用我当前的方法,数据库列中的最终结果始终是零字节。 phpMyAdmin Screenshot

这是表单上图片上传的代码:

input type="file" name="_imagePost">

这是页面上的 PHP 代码,我使用的是 MySQLi:

    if(isset($_POST['_imagePost']))
    {
        $_useImagePost = 1;
        $_imagePost = file_get_contents($_FILES['_imagePost']);

        // Open DB Connection
        $_conn = databaseConnect();

        $_stmt = $_conn->prepare("INSERT INTO Question (Question_Type, Question_Text, Question_Answer, Question_UseImage, Question_Image) VALUES (?, ?, ?, ?, ?)");
        $_stmt->bind_param("sssib", $_typePost, $_textPost, $_answerPost, $_useImagePost, $_null);
        $_stmt->send_long_data(4,$_imagePost);
        $_stmt->execute();

        // Close DB Connection
        $_conn->close();
    }

我不确定的是,当输入类型为文件时,“isset($_POST['_imagePost'])” 是否有效。

但是,我可以肯定的是,当前的设置根本不起作用。

【问题讨论】:

  • 你应该使用isset($_FILES['_imagePost'])
  • 输入类型为file时不会有$_POST['_imagePost']
  • 不幸的是,无论图像是否附加到文件字段,使用“isset($_FILES['_imagePost'])”似乎总是评估为假。
  • 您是否在表单标签中添加了method="post" enctype="multipart/form-data"
  • 这似乎已经解决了!谢谢@Sunand!

标签: php mysql mysqli blob


【解决方案1】:

你写:

$_imagePost = file_get_contents($_FILES['_imagePost']);

正确的语法是:

$_imagePost = file_get_contents($_FILES['_imagePost']['tmp_name']);

$_FILES 是一个带有以下键的关联数组:

  • [name] => 原始文件名;
  • [type] => 上传文件的 mimetype;
  • [tmp_name] => 临时文件路径(上传文件的存储位置);
  • [错误] => 错误;
  • [size] => 上传文件的大小。

【讨论】:

  • 没有区别,最终结果在数据库中仍然是 0 Bytes。
  • 在您必须检查值之前。试试var_dump($_FILES)如果你得到错误,你的问题在之前,不在db查询中
猜你喜欢
  • 1970-01-01
  • 2020-10-10
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 2015-01-01
  • 2012-07-23
相关资源
最近更新 更多