0

画像のフィールドを持つ単純なmySQLデータベースを作成する必要があります。

フィールドの種類やサーバー上のディレクトリからのアップロード方法などを説明する簡単な例はありますか?

ありがとう。

エリック

4

4 に答える 4

2

データベースに画像を保存するには、(少なくとも) 2 つの方法があります。

  1. ファイルシステム上のファイルへの参照を保存する
  2. データベース内にバイナリデータとして保存する

データベース内に保存されたバイナリ データは、BLOBS (バイナリ ラージ オブジェクト) として知られています。詳細については、こちらを参照してください。

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

于 2012-04-04T13:45:59.297 に答える
2

LOAD_FILE関数を使用して、ファイルの内容を文字列として返すことができます。

INSERT INTO table_name VALUES (LOAD_FILE('img.png'));
于 2012-04-04T13:49:11.090 に答える
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>
于 2012-04-04T13:49:37.890 に答える
0

fwrite または php GD ライブラリを使用して、画像をフォルダーに配置します。

次に、サイズ、幅、高さ、名前などの追加情報とともに、画像パスをデータベースに保存して、それらをフィルタリング/ソートできるようにします。

于 2012-04-04T13:48:28.327 に答える