【问题标题】:Can I load a picture into mySQL server-side?我可以将图片加载到 mySQL 服务器端吗?
【发布时间】:2012-04-04 21:57:16
【问题描述】:

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

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

谢谢。

埃里克

【问题讨论】:

    标签: mysql image


    【解决方案1】:

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

    1. 在文件系统上存储对文件的引用
    2. 将它们作为二进制数据存储在数据库中

    存储在数据库中的二进制数据称为 BLOBS(二进制大对象),您可以在此处阅读更多内容:-

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        这是一个基本的 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>
        

        【讨论】:

          【解决方案4】:

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

          然后将图像路径保存在数据库中,可能还包含其他信息,例如大小、宽度、高度、名称等,以便能够对它们进行过滤/排序。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-19
            • 1970-01-01
            • 1970-01-01
            • 2017-02-18
            • 2023-04-08
            • 1970-01-01
            相关资源
            最近更新 更多