将Image文件上传到数据库

时间:2012-11-24 21:52:53

标签: php

我的html代码如下: -

<form id="form" name="form" action="banner_ad_post.php" method="post" enctype="multipart/form-data">
                <p>
                  <label for="banner_name"><font color="#FF0000"> * </font>Banner Name: </label>
                  <input type="text" name="banner_name" id="banner_name" value="" maxlength="100" required="required"/>
                </p>
                <p>
                  <label for="Banner_website_url"><font color="#FF0000"> * </font>Banner website Url: </label>
                  <input type="url" name="banner_site_url" id="banner_site_url" value="" maxlength="100" required="required"/>
                </p>

                <p>
                  <label for="banner_image_url">Banner Image Url: </label>
                  <input type="file" name="file" id="file" value="" accept="image" placeholder="Browse from hard disk" onchange="img_path()"/> &nbsp;
                   <font color="#FF0000"> OR</font> &nbsp;
                  <input type="url" name="banner_image_url" id="banner_image_url" value="" maxlength="100" placeholder="Enter the url from website." onchange="validate()"/> &nbsp; 


                </p>
                <p>
                <label for="submit"> </label>
                  <input type="submit" id="submit" name="submit" value="Submit" onclick="preview()" />
                </p>
              </form>

和php脚本如: -

<?php 
     if(isset($_POST['banner_name']) && isset($_POST['banner_site_url']) && isset($_POST['banner_image_url']) && isset($_FILES['file']['name']))
     {
        $banner_name=$_POST['banner_name'];
        $banner_name=strip_tags($banner_name);
        $banner_site_url=$_POST['banner_site_url'];
        $banner_site_url=strip_tags($banner_site_url);
        $banner_image_url=$_POST['banner_image_url'];
        $banner_image_url=strip_tags($banner_image_url);
        $name=$_FILES['file']['name'];

        $size=$_FILES['file']['size'];
        $type=$_FILES['file']['type'];
        $tmp_name=$_FILES['file']['tmp_name'];
        $error=$_FILES['file']['error'];
        $maxsize = 512000;
        $location='uploads/';
        if(!empty($banner_image_url))
            {
            $file_location=$banner_image_url;
            ?>
            <div id="img"> 
            <img src="<?php echo $file_location?>" align="left" width="200px" height="200px">
            </div>
            <?php
            } elseif (!empty($name))
            {
            $file_location=$location.$name;
            ?>
                    <div id="img">  
                    <img src="http://localhost/leadstool/<?php echo $file_location?>" align="left" width="200px" height="200px">
                    </div>

                    <?php 
            }

          if(!empty($banner_name) && !empty($banner_site_url))
          {
             $query="INSERT INTO `banner_ad` VALUES('','$id','$banner_name','$file_location','$banner_site_url','0',now())";
             if($query_run=mysql_query($query))
             {
                if($size <= $maxsize)
                {                         
                  if(move_uploaded_file($tmp_name,$location.$name))
                    {
                    echo'<font color="green">File uploaded & has been sent for approval.</font>';
                    } 
                    else 
                    {
                    echo'<font color="red">File can not be uploaded.</font>';

                    }
                } else {
                echo'<font color="green">Your information has been uploaded and has been sent for approval.</font>';
                }
             }
             else
             {
                  echo'<font color="red"> The request can not be performed.</font>';
             }
         } 
         else 
         {
          echo'<font color="red">These fields are mandatory.</font>';
         }
    }

     ?>

这里,问题是由于某种原因,move_uploaded_file()方法无法上传数据库中的文件。但它仍然会输出“已上传文件并已发送以供审批”的输出。现在,我不明白我到底错过了什么?

任何帮助将不胜感激...... 先感谢您!

2 个答案:

答案 0 :(得分:1)

抱歉!这个问题没有编程错误。只是一个简单的逻辑错误。

我正在发布代码...我已编辑以纠正问题。

if($size <= $maxsize)
                {                         
                  if(move_uploaded_file($tmp_name,$location.$name))
                    {
                    echo'<font color="green">File uploaded & has been sent for approval.</font>';
                    } 
                    else 
                    {
                    echo'<font color="red">File can not be uploaded.</font>';
                    ?>
                    <div id="img">  
                    <img src="http://localhost/leadstool/<?php echo $file_location?>" align="left" width="200px" height="200px">
                    </div>

                    <?php 

                    }
                } else {
                echo'<font color="red">File size must be less than 500KB.</font>';
                }

答案 1 :(得分:0)

你也可以这样做。它运作得很好:

通过表单到数据库的图像:

表单页面:

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

插入数据库页面:

<?php

  include 'conf.php';

  if ($_FILES["image"]["error"] > 0)
  {
     echo "<font size = '5'><font color=\"#e31919\">Error: NO CHOSEN FILE <br />";
     echo"<p><font size = '5'><font color=\"#e31919\">INSERT TO DATABASE FAILED";
   }
   else
   {
     move_uploaded_file($_FILES["image"]["tmp_name"],"images/" . $_FILES["image"]["name"]);
     echo"<font size = '5'><font color=\"#0CF44A\">SAVED<br>";

     $file="images/".$_FILES["image"]["name"];
     $sql="INSERT INTO database_table (table_column_1, table_column_2) VALUES ('','$file')";

     if (!mysql_query($sql))
     {
        die('Error: ' . mysql_error());
     }
     echo "<font size = '5'><font color=\"#0CF44A\">SAVED TO DATABASE";

   }

   mysql_close();

?>