我可以将图片加载到mySQL服务器端吗?

时间:2012-04-04 13:42:46

标签: mysql image

我需要创建一个带有图像字段的简单mySQL数据库。

是否有一个简单的例子说明了字段的类型以及如何从服务器上的目录上传等等??

感谢。

埃里克

4 个答案:

答案 0 :(得分:2)

有两种方式(至少)将图像存储在数据库中: -

  1. 存储对文件系统上文件的引用
  2. 将它们作为二进制数据存储在数据库中
  3. 存储在数据库中的二进制数据称为BLOBS(二进制大对象),您可以在这里阅读更多内容: -

    http://dev.mysql.com/doc/refman/5.0/en/blob.html

答案 1 :(得分:2)

您可以使用LOAD_FILE函数将文件内容作为字符串返回,例如 -

INSERT INTO table_name VALUES (LOAD_FILE('img.png'));

答案 2 :(得分:1)

以下是BLOB存储的基本示例:

CREATE TABLE IF NOT EXISTS `files` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `filename` varchar(255) DEFAULT NULL,
  `ext` varchar(5) DEFAULT NULL,
  `filedata` blob,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;

<?php
$db = mysql_connect('localhost', 'user', 'pass') or die('Could not connect:' . mysql_error());
mysql_select_db('the_database',$db);

if(isset($_FILES['upload'])){

    if (is_uploaded_file($_FILES['upload']['tmp_name'])) {
        $file_parts = pathinfo($_FILES['upload']['name']);

        $file['name'] =$file_parts['filename'];
        $file['ext']  =$file_parts['extension'];
        $file['data'] =addslashes(file_get_contents($_FILES['upload']['tmp_name'])); 

        mysql_query('INSERT into files (id,filename,ext,filedata) values ("","'.$file['name'].'","'.$file['ext'].'","'.$file['data'].'")',$db) or die(mysql_error());
        $notice="File Uploaded successfully";
    }
}
?>


<html>
<head>
<title>BLOB Upload</title>
</head>
<body>

<form method="POST" enctype="multipart/form-data" action="">
<h1 align="center">BLOB Upload</h1>
  <p align="center"><input type="file" name="upload" size="40"></p>
  <p align="center"><input type="submit" value="Upload"></p>
  <?php if(isset($notice)){echo '<p align="center">'.$notice.'</p>';}?>
</form>

</body>

</html>

答案 3 :(得分:0)

使用fwrite或php GD libary将图像放在文件夹中。

然后将图像路径保存在数据库中,以及其他信息(如大小,宽度,高度,名称等),以便对其进行过滤/排序。