php-Beispiel für das Hochladen von Bildern und deren Speicherung in der Datenbank
php lädt Bilder hoch, im Allgemeinen mit der Methode move_uploaded_file um sie auf dem Server zu speichern. 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, Dateifreigabe kann zwischen mehreren Servern erreicht werden, um Platz zu 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 // 连接数据库 $conn=@mysql_connect("localhost","root","") or die(mysql_error()); @mysql_select_db('demo',$conn) or die(mysql_error()); // 判断action $action = isset($_REQUEST['action'])? $_REQUEST['action'] : ''; // 上传图片 if($action=='add'){ $image = mysql_escape_string(file_get_contents($_FILES['photo']['tmp_name'])); $type = $_FILES['photo']['type']; $sqlstr = "insert into photo(type,binarydata) values('".$type."','".$image."')"; @mysql_query($sqlstr) or die(mysql_error()); header('location:upload_image_todb.php'); exit(); // 显示图片 }elseif($action=='show'){ $id = isset($_GET['id'])? intval($_GET['id']) : 0; $sqlstr = "select * from photo where id=$id"; $query = mysql_query($sqlstr) or die(mysql_error()); $thread = mysql_fetch_assoc($query); if($thread){ header('content-type:'.$thread['type']); echo $thread['binarydata']; 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" content="text/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='.$val['id'].'&t='.time().'" width="150"></p>'; } ?> </body> </html> <?php } ?>
In diesem Artikel wird erläutert, wie Sie Bilder über PHP hochladen und in der Datenbank speichern. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
So senden und empfangen Sie Streaming-Dateien über PHP
Wie Sie Bilder teilweise über PHP mosaikieren
Erklärung, wie man den Datei-MIME-Typ über PHP erhält
Das obige ist der detaillierte Inhalt vonEin Beispiel für das Hochladen von Bildern und deren Speicherung in der Datenbank über PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!