将图像上载到数据库

时间:2013-04-27 19:03:05

标签: php

这是上传表单的代码,使我能够将图像上传到数据库

<html>
<head>
<title>File Uploading Form</title>
</head>

<body>
<h3>File Upload:</h3>
Select a file to upload: <br />

<form action="file_uploader.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>

这是我在名为file_uploader.php的文件中的代码。在尝试完成此操作时,我收到错误无法复制文件!

<?php
if( $_FILES['file']['name'] != "" )
{
   copy( $_FILES['file']['name'], "databasehostdetails" ) or 
           die( "Could not copy file!");
}
else
{
    die("No file specified!");
}
?>
<html>
<head>
<title>Uploading Complete</title>
</head>

<body>
<h2>Uploaded File Info:</h2>
<ul>
<li>Sent file: <?php echo $_FILES['file']['name'];  ?>
<li>File size: <?php echo $_FILES['file']['size'];  ?> bytes
<li>File type: <?php echo $_FILES['file']['type'];  ?>
</ul>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

您需要使用tmp_name。另外,databasehostdetails是什么?第二个参数是目标(要将文件复制到的位置)。

copy($_FILES['file']['tmp_name'], DESTINATION_PATH);

答案 1 :(得分:0)

这是一种简单的方法。我给你我的剧本 的index.html 但要小心:

  1. 不建议使用,因为数据库存储文件的成本很高
  2. 修复任何sql注入vurnelabilities。我自己不知道该怎么做。你可以进行研究并修复它。
  3. 另请参阅Storing Images in DB - Yea or Nay?
  4. 然而,如果代码不是大规模应用程序并且不会发生sql注入攻击,则代码工作得很好。

    <html>
    <body>
     <form method="post" enctype="multipart/form-data" action="doupload.php">
     <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
     <input name="userfile" type="file" id="userfile">
     <input name="upload" type="submit" id="upload" value=" Upload ">
     </form>
    
    </body>
    </html>
    

    doupload.php

    <?php         
     include("config.php");
    
     $fileName = $_FILES['userfile']['name'];
     $tmpName =  $_FILES['userfile']['tmp_name'];
     $fileSize = $_FILES['userfile']['size'];
     $fileType = $_FILES['userfile']['type'];
     $fp = fopen($tmpName, 'r');
     $content = fread($fp, filesize($tmpName));
     $content = addslashes($content);
     fclose($fp);
    
     if(!get_magic_quotes_gpc())
     {
     $fileName = addslashes($fileName);
     }
    
     $query = "INSERT INTO upload set name='".$fileName."', size='".$fileSize."', type='".$fileType."', content='".$content."'";        
     mysql_query($query) ;    
    ?>     
    

    getuploaded.php

    <?php
    // select records from database if exists to display
    include("config.php");
    $query1 = "SELECT id, name FROM upload";
    $result1 = mysql_query($query1) or die('Error, query failed');
    
    
    if(mysql_num_rows($result1)>0)
    {
     while(list($id, $name) = mysql_fetch_array($result1))
     {
     ?>
     <a href="download.php?id=<?php echo $id;?>"><?php echo $name;?></a> <br>
    
     <?php
     }
    }
    ?>
    

    的download.php

    <?php
    //header("Content-type: $type");
    include("config.php");
    $id    = $_GET['id'];
     $query = "SELECT name, type, size, content " .
     "FROM upload WHERE id = '$id'";
    
     $result = mysql_query($query) or die('Error, query failed');
     list($name, $type, $size, $content) =  mysql_fetch_array($result);
    
     header("Content-length: $size");
     header("Content-type: $type");
     header("Content-Disposition: attachment; filename=$name");
     echo $content;
    
    ?>
    

    的config.php

    <?php
     $dbhost = 'localhost';
     $dbuser = 'root';
     $dbpass = '';
     $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');
     $dbname = 'uploadfile';
     mysql_select_db($dbname);
    ?>
    

    创建表

    CREATE TABLE upload (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(30) NOT NULL,
    type VARCHAR(30) NOT NULL,
    size INT NOT NULL,
    content MEDIUMBLOB NOT NULL,
    PRIMARY KEY(id)
    );