Maison > Article > développement back-end > Un exemple de téléchargement d'images et de leur enregistrement dans la base de données via php
exemple php de téléchargement d'images et de leur enregistrement dans la base de données
php télécharge des images, généralement en utilisant la méthode move_uploaded_file pour les sauvegarder sur le serveur. Mais si un site Web dispose de plusieurs serveurs, il doit publier des images sur tous les serveurs pour une utilisation normale (sauf ceux utilisant des serveurs d'images)
Si les données d'image sont enregistrées dans la base de données, partage de fichiers peut être réalisé entre plusieurs serveurs pour économiser de l'espace.
Tout d'abord, le fichier image est constitué de données binaires, les données binaires doivent donc être enregistrées dans la base de données MySQL.
La base de données MySQL fournit le type BLOB pour stocker de grandes quantités de données. BLOB est un objet binaire qui peut accueillir des données de différentes tailles.
Il existe quatre types de BLOB, qui sont les mêmes à l'exception de la quantité maximale d'informations stockées. Différents types peuvent être utilisés en fonction de vos besoins.
TinyBlob Maximum 255B
Blob Maximum 65K
MediumBlob Maximum 16M
LongBlob Maximum 4G
Tableau de donnéesphoto, utilisé pour enregistrer les données d'image, la structure est comme suit :
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 } ?>
Cet article explique comment télécharger des images et les enregistrer dans la base de données via php. Pour plus de contenu connexe, veuillez faire attention au site Web chinois php.
Recommandations associées :
Comment envoyer et recevoir des fichiers en streaming via php
Comment mosaïquer partiellement des images via php
Explication sur la façon d'obtenir le type de fichier MIME via php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!