【问题标题】:To upload a image in MySql database via php通过 php 在 MySql 数据库中上传图像
【发布时间】:2012-05-31 16:27:03
【问题描述】:

我目前正在开发一个需要用户上传不同产品图片的网站。我通过 php 使用 MySql 数据库来实现它。

我获取用户输入的基本表单的代码是:

<form enctype="multipart/form-data" action="testimage1.php" method="post" name="changer">
<input name="MAX_FILE_SIZE" value="102400" type="hidden">
<input name="image" accept="image/jpeg" type="file">
<input value="Submit" type="submit">
</form>

我的数据库表是:

 mysql> CREATE TABLE tbl_images (
 > id tinyint(3) unsigned NOT NULL auto_increment,
 > image blob NOT NULL,
 > PRIMARY KEY (id)
 > );

testimage1.php 代码如下:-

 $username = "root";
 $password = "";
 $host = "localhost";
 $database = "thinstrokes";


 $link = mysql_connect($host, $username, $password);
 if (!$link) {
 die('Could not connect: ' . mysql_error());
 }

// Select your database
mysql_select_db ($database);

    if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { 

  // Temporary file name stored on the server
  $tmpName  = $_FILES['image']['tmp_name'];  

  // Read the file 
  $fp      = fopen($tmpName, 'r');
  $data = fread($fp, filesize($tmpName));
  $data = addslashes($data);
  fclose($fp);


  // Create the query and insert
  // into our database.
  $query = "INSERT INTO tbl_images ";
  $query .= "(image) VALUES ('$data')";
  $results = mysql_query($query, $link) or die(mysql_error());

  // Print results
  print "Thank you, your file has been uploaded.";

  }
  else {
  print "No image selected/uploaded";
  }

提交表单时出现错误:No image selected/uploaded

我没有收到错误消息...而且我之前已经提出过这样的要求:

但是直到现在我还没有成功将图像存储在数据库中。

【问题讨论】:

  • "在提交表单时我收到错误" -- "我没有收到错误" -- 那么,您在提交表单时是否看到错误?如果您正在看到“未选择/上传图片”错误,我建议您使用 var_dump($_FILES) 查看它是否包含您期望它包含的数据。
  • 使用fopen的目的是什么??
  • 你的脚本工作正常,检查我的答案
  • 它在我的笔记本电脑上不起作用,我正在使用 xampp-win32-1.7.3.. 并使用 xampp 的 mysql
  • @greggory.hz 对不起,我收到了错误,该错误是..“未选择/上传图像”..

标签: php mysql html


【解决方案1】:

您的脚本运行良好,这是我测试的:

<?

if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { 

  // Temporary file name stored on the server
  $tmpName  = $_FILES['image']['tmp_name'];  

  // Read the file 
  $fp      = fopen($tmpName, 'r');
  $data = fread($fp, filesize($tmpName));
  $data = addslashes($data);
  fclose($fp);


  // Create the query and insert

  // Print results
  print "Thank you, your file has been uploaded.";

  }
  else {
  print "No image selected/uploaded";
  }

?>

<form enctype="multipart/form-data" action="" method="post" name="changer">
<input name="MAX_FILE_SIZE" value="102400" type="hidden">
<input name="image" accept="image/jpeg" type="file">
<input value="Submit" type="submit">
</form>

而且它工作得很好,如果你想看到它的实际效果,我可以把链接发给你。

一定是其他东西破坏了您的代码(*请注意,我删除了数据库查询以避免出现 mysql 错误,但脚本即使在那里也能正常工作。

【讨论】:

  • 是的,我明白了……它只适用于小于 20kb 的图像……我想上传更大尺寸的图像……?
  • 你要我发送一段新的代码来处理上传文件等吗??
【解决方案2】:

//这里是你的问题的解决方案

<form enctype="multipart/form-data" action="" method="post" name="changer">
    <input name="MAX_FILE_SIZE" value="102400" type="hidden">
    <input name="image" accept="image/jpeg" type="file">
    <input value="Submit" type="submit">
</form>
<?php

    // connection to database
    include 'includes/connection.php';
?>

<?php

    if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { 
        // Temporary file name stored on the server
        $tmpName  = $_FILES['image']['tmp_name'];  
        // Read the file 
        $fp      = fopen($tmpName, 'r');
        $data = fread($fp, filesize($tmpName));
        $data = addslashes($data);
        fclose($fp);
        $result = mysql_query("INSERT INTO image (image)VALUES ( '$data')", $connection);
        if(!$result)
        {
            die("Database query failed: ". mysql_error());
        }
        // Print results

        print "Thank you, your file has been uploaded.";
    }
    else 
    {
        print "No image selected/uploaded";
    }
?>

<?php
    //close connection
    include 'includes/close.php';
?>

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 2016-08-03
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多