人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

(PHP MYSQL)画像をデータベースに保存したいのですがいまいち方法が分かりません。

画像をブラウザ上から保存できる簡単なスクリプトを書いてください。お願いします。

保存するDBのSQLファイルもお願いします。

●質問者: esecua
●カテゴリ:コンピュータ 趣味・スポーツ
✍キーワード:dB MySQL PHP SQL いまいち
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● vinaka
●2ポイント

http://lists.sourceforge.jp/mailman/listinfo/seasar-php

Seasar-php ?????????

ここで質問してみてはいかがでしょうか?

アバウトな質問過ぎて、回答にも困ります。


ファイル名はどうするつもりですか?

サイトで勝手につけるのですか?

拡張子は?

画像のサイズは?

出力形式は?

GDは入っているのか?

PHPのバージョンは?

Mysqlのバージョンは?

◎質問者からの返答

すいません。

ファイル名は $user.”.jpg” で考えています。

拡張子は .jpg

画像サイズは 1.5KB

出力形式 わかりません

GD 入っているか分かりません

PHP Ver5

MySQL Ver5.0.17

出力形式はわかりませんのでアドバイスをいただけたら幸いです。

よろしくお願いします。


2 ● iken_jp
●1ポイント

http://www.doyouphp.jp/sample/sample_ora_blob.shtml

Do You PHP? - BLOB?^????p

Googleなどで検索すればすぐに見つかると思いますが....

このURLはわかりやすいと思います

◎質問者からの返答

MySQLですが。


3 ● yamiwolf
●2ポイント

http://sourceforge.net/projects/photoarch/

SourceForge.net: PhotoArch

PHP+MYSQLのWeb画像データベースです

オープンソースなのでソースコードをみながら研究してみてはいかがですか?

◎質問者からの返答

ん〜ソースコードをじっくり見ている時間はないのです。。


4 ●
●40ポイント

http://www.itmedia.co.jp/enterprise/0309/24/epn25.html

エンタープライズ:MySQLにファイルを格納する

ここが参考になります。


まず、画像を格納するテーブルを作成する必要があります。

テーブル作成の際、バイナリデータを扱えるフィールドを用意しておいてください。



テーブル名 : image


カラム :


・id (auto_increment)

・img_data (BLOB)


といった感じです。

(一番シンプルな例だと思います。)

PHPをお使いであれば、phpMyAdminを使ってGUIでテーブルを作成すれば簡単ですよね。


画像を保存するフィールドは1.5KB程度であればBLOB(最大サイズは64KB)で問題ありません。

より大きい画像も格納したい場合、MEDIUMBLOB(最大サイズは16MB)にしておけば良いと思います。

http://ns1.php.gr.jp/pipermail/php-users/2003-April/015326.html

[PHP-users 14794]画像データ格納時のエラー(文字化けのため再投稿)

このソースでほぼいけます。

実際に試してみました。

(もう少しキレイに書き直せそうな気もしますが、とりあえず。)


formのactionは


action=”<?echo $PHP_SELF;?>”


のように変更しておけば、ファイル名に影響されないので良いと思います。


また、


mysql_connect()、mysql_select_db()


に渡す値は環境に合ったものに変更してください。


MAX_FILE_SIZEのvalueを使ったファイルサイズチェックは実装していないようですので、PHPでサイズチェックしてエラーにする処理を入れておいた方が良いと思います。

http://www.hatena.ne.jp/1139591611

人力検索はてな - (PHP)画像アップローダーをPHPで作りたいと思います。 ただアップロードするのではなく、アップロードされた画像の縦横サイズ、ファイル自体のサイズを指定されたサイズに..

画像サイズを変更して格納したい、という場合などはGDと組み合わせてみてください。


ちょっと時間(とスキル!)がないのでキレイなサンプルソースを準備できませんが、上記の情報でトライしてみていただけませんか。

◎質問者からの返答

回答ありがとうございます。

何とかDBの格納までできました。ありがとうございます。ちょっと質問からずれますが、この格納したデータをDBから取り出し再度画像として表示させるにはどうしたらいいのでしょうか?

そのまま表示するとt?_Z8??(Jv7?h˜?ml¶j??L?O?n¼???5´???}ƒ?g?E??«????? ―x.?wQ2?pr=???Cvといったものが表示されます。


5 ●
●35ポイント

http://www.mysql.gr.jp/mysqlml/mysql/msg/2349

mysql:2349

度々失礼します。

このソースあたりが参考になると思います。

後で読んでみてください。


とりあえず動かしたい、ということであれば、以下のようにしてみてください。


まず、画像表示用のスクリプトを準備します。

名前は仮に image_display.php としておきます。

idをキーにしてDBを検索し、画像の内容を返します。


image_display.php


<?

// 本来は、DB接続ができたかどうか、DBを選択できたかどうか

// SQLの結果が空ではないか、などをチェックすべきですが、省略します


// DB接続

$conn=mysql_connect(”localhost”,”user_id”,”password”);

// DB選択

mysql_select_db(”test”);

// SQL問合せ

// このphpを呼び出す際、idを指定

$result = mysql_query(”select * from image where(id=$_GET[id])”);

// 問合せ結果を配列にセット

$row = mysql_fetch_array($result);


// 本当はここでheader()で適切なContent-typeを出力した方が良いはず


echo $row[1]; // テーブルの2列目のカラムを取得


?>


表示用のスクリプトは以下の通りです。


<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8”>

<title>画像表示</title>

</head>

<body>

<p>MySQLのBLOBにバイナリで格納した画像を表示してみます。 </p>

<?

echo ”<img src=¥”image_display.php?id=1¥”>”

?>

</body>

</html>


上記の例では


image_display.php?id=1


とすることで、id列の値が1の行のimg_data列に格納された画像を表示します。


※本来は参考URLにもあるようにDBに格納するファイルのMIMEもDBの別カラムに持たせておいて、その内容を元にheader()で適切なヘッダを出力すべきだと思います。

◎質問者からの返答

ありがとうございます。やっと実装できました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ