Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Beispiel zum Hochladen eines Bildes und zum Speichern in einer Datenbank

PHP-Beispiel zum Hochladen eines Bildes und zum Speichern in einer Datenbank

WBOY
WBOYOriginal
2016-08-08 09:22:31999Durchsuche

Beispiel für das Hochladen von Bildern mit PHP und deren Speicherung in der Datenbank

Das Hochladen von Bildern mit PHP wird im Allgemeinen mit der Methode move_uploaded_file auf dem Server gespeichert. Wenn eine Website jedoch über mehrere Server verfügt, muss sie Bilder für den normalen Gebrauch auf allen Servern veröffentlichen (mit Ausnahme derjenigen, die Bildserver verwenden).

Wenn die Bilddaten in der Datenbank gespeichert werden, kann dies zwischen mehreren Servern realisiert werden . Dateifreigabe, Platz sparen.

Zuallererst handelt es sich bei der Bilddatei um Binärdaten, daher müssen die Binärdaten in der MySQL-Datenbank gespeichert werden.

MySQL-Datenbank bietet den BLOB-Typ zum Speichern großer Datenmengen. BLOB ist ein binäres Objekt, das Daten unterschiedlicher Größe aufnehmen kann.

Es gibt vier Arten von BLOBs, die bis auf die maximale Menge an gespeicherten Informationen gleich sind. Je nach Bedarf können unterschiedliche Typen verwendet werden.

TinyBlob Maximum 255B

Blob Maximum 65K

MediumBlob Maximum 16M

LongBlob Maximum 4G

DatentabelleFoto, zum Speichern von Bilddaten verwendet, die Struktur ist wie folgt:

CREATE TABLE `photo` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `type` varchar(100) NOT NULL,
  `binarydata` mediumblob NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

upload_image_todb.php

<?php
// 连接数据库
$c  or die(mysql_error());
@mysql_select_db(&#39;demo&#39;,$conn) or die(mysql_error());

// 判断action
$action = isset($_REQUEST[&#39;action&#39;])? $_REQUEST[&#39;action&#39;] : &#39;&#39;;


// 上传图片
if($action==&#39;add&#39;){

    $image = mysql_escape_string(file_get_contents($_FILES[&#39;photo&#39;][&#39;tmp_name&#39;]));
    $type = $_FILES[&#39;photo&#39;][&#39;type&#39;];
    $sqlstr = "insert into photo(type,binarydata) values(&#39;".$type."&#39;,&#39;".$image."&#39;)";

    @mysql_query($sqlstr) or die(mysql_error());

    header(&#39;location:upload_image_todb.php&#39;);
    exit();

// 显示图片
}elseif($action==&#39;show&#39;){

    $id = isset($_GET[&#39;id&#39;])? intval($_GET[&#39;id&#39;]) : 0;
    $sqlstr = "select * from photo where id=$id";
    $query = mysql_query($sqlstr) or die(mysql_error());
    
    $thread = mysql_fetch_assoc($query);
    
    if($thread){
        header(&#39;content-type:&#39;.$thread[&#39;type&#39;]);
        echo $thread[&#39;binarydata&#39;];
        exit();
    }

}else{
// 显示图片列表及上传表单
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" c/html; charset=utf-8">
  <title> upload image to db demo </title>
 </head>

 <body>
  <form name="form1" method="post" action="upload_image_todb.php" enctype="multipart/form-data">
  <p>图片:<input type="file" name="photo"></p>
  <p><input type="hidden" name="action" value="add"><input type="submit" name="b1" value="提交"></p>
  </form>

<?php
    $sqlstr = "select * from photo order by id desc";
    $query = mysql_query($sqlstr) or die(mysql_error());
    $result = array();
    while($thread=mysql_fetch_assoc($query)){
        $result[] = $thread;
    }
    foreach($result as $val){
        echo '<p><img src="upload_image_todb.php?action=show&id=&#39;.$val[&#39;id&#39;].&#39;&t=&#39;.time().&#39;" width="150"></p>';
    }
?>

 </body>
</html>
<?php
}
?>

Das obige Beispiel stellt das Hochladen von Bildern und deren Speichern in der Datenbank in PHP vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn