• 締切済み

DBにphp画像格納

画像保存用ソース if($_FILES['imagefile']['error']) exit;$mime = $_FILES['imagefile']['type'];//mime type$path = $_FILES['imagefile']['tmp_name'];//uploaded fileif($mime=='image/pjpeg') $mime='image/jpeg';if($mime=='image/x-png') $mime='image/png';if(is_uploaded_file($path)){$mime = addslashes($mime);$data = addslashes(file_get_contents($path));//一時ファイルの読み込み$sql = "insert into image_table (mime,data) values ('$mime','$data')";$db->query($sql);//略記} 表示用ソース //image.php$id = intval($_GET['id']);$sql = "select * from image_table where id=$id";if($image = $db->findone($sql))//1レコード取得(略記){header("Content-type: ".$image['mime']);echo stripslashes($image['data']);} それぞれ、どこを変更して記述する必要がありますか?? DB名sample テーブル名dbdb パスワードhogehogeと仮定した場合。

noname#142312
noname#142312
  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

非常に見づらいですが、一応見た感じで、画像は入らんなということだけはわかります。 ・画像ファイルをテキスト扱いしている、画像ファイルは、バイナリなのでバイナリとして扱う必要があります。 ・DBの中身も、テキストを使っている。 適当思いつく方法は、2種類 ・DBのBLOB(バイナリ・ラージ・オブジェクト)を使う。 BLOBはDBによって違うので、どうなるかはわかりません。 ・画像ファイルをBase64でエンコード/デコードする そもそも、バイナリをテキストにするためのものなので、これでエンコードしてDB格納、 表示する際にデコードするという感じですかね

関連するQ&A

  • phpで格納した画像を表示されるには?

    超の付く初心者で毎日苦闘しています。ほんとにすみませんが何方か教えてください。 「(1)写真を登録して、(2)それを表示させる」だけの事を練習でやっているんですが、どう書けばいいんでしょうか。 (1)【画像登録のフォーム】/test_info.html ----------------------------------------------------------- <form action="test_put.php" method="post" enctype="multipart/form-data"> <INPUT type="hidden" name="MAX_FILE_SIZE" value="500000"> //←500kbまでという意味なんですよね? <input type="file" name="uploaded" size="50" /><br /> <input type="submit" value="アップロード" /> </form> ------------------------------------------------------------ (2)【画像を一旦受けて、指定するフォルダに移動させるPHP】/test_put.php ------------------------------------------------------------ <?php move_uploaded_file($_FILES['uploaded']['tmp_name'],'./images/'.$_FILES['uploaded']['name']); print('アップロードに成功しました!<br />'); print $_FILES['uploaded']['name']; ←この部分を文字ではなく画像で! ?> ------------------------------------------------------------- 上記は殆ど本・Webのパクリですが、矢印部分に「画像を出しなさい!」という命令を書けばいいんだと思いますが、それがわかりません。なんと書けばいいんでしょうか? 【状況】 ●ロリポップのサーバーに実際にアップして試しています。 ●/test_info.html 画面から適当な写真データを送信すると/test_put.php 画面に遷移して、「アップロードに成功しました!」改行して「****.jpg」と表示されます。  ●ロリポのftp管理画面上で確認すると、アップした写真データは正常にアップされています。 mysqlに行くまでのスタートにも立てない状態です。ここまで何ヶ月も掛かってこんなもんです(^_^;) どなたかよろしくお願いいたします!

    • ベストアンサー
    • PHP
  • 3日で作るPHPの本で画像アップロードするには?

    3日で作るPHPの本で画像アップロードするには? フォーム内 画像 <input type="file" name="image" size="40"><br> 下記内容でファイル内に保存する $upload_file = date("ymdHis")."_".basename($_FILES["image"]["name"]); $upload_path = "<保存先のディレクトリ名>".$upload_file; $upload_url = "./images/".$upload_file; move_uploaded_file($_FILES["image"]["tmp_name"],$upload_path); 以上のように表記してありましたが、 表示の仕方が書いていなくどのように表記したよいのかサンプルなどで教えていただきたいです。 さらに上記のように保存先のディレクトリ名書を絶対相対パスで書いてみたのですが保存されませんでした。 どこを変更するとよいでしょうか

    • 締切済み
    • PHP
  • 画像のアップロード

    はじめまして。本を参考にphp4.3.11&MYSQLによる画像のアップロードについて勉強中の初心者です。 開発はレンタルサーバーで行っています。 画像のアップロードに関して下記プログラムを設定しているのですが、 エラーが表示されて画像のアップロードができません。 ■設定したitem2.php 内のソースです。 require( '../config.php' ); // 写真アップロード $path_parts = pathinfo( $_FILES['userfile']['name'] ); $uploadfile = $item_image_dir . $item_id . '.' . strtolower( $path_parts['extension'] ); if ( move_uploaded_file( $_FILES['userfile']['tmp_name'], $uploadfile ) ) { chmod( $uploadfile, 0777 ); $sql = "update item set image_url ='" . $item_image_url . $item_id . '.' . strtolower( $path_parts['extension'] ) . "' where item_id = '$item_id'"; $result = mysql_query( $sql ); } ■外部参照している../config.php 内の記述です。 $item_image_dir = '/var/www/****/htdocs/image/item/'; $item_image_url = '/image/item/'; ▼エラー内容です。 Warning: move_uploaded_file(home/****/public_html/image/item/0.gif) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/****/public_html/admin/item2.php on line 68 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpov0Fqr' to 'home/****/public_html/image/item/0.gif' in /home/****/public_html/admin/item2.php on line 68 image/itemのパラメータは777に設定しております。 どなたか原因お分かりになられる方がいらっしゃったらどうかお教え ください。ご不明な点などございましたら是非ご指摘ください。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php,mysqlにて画像パス保存/表示につい

    mysqlに画像パスを格納しておき、phpでブラウザに表示するという部分について質問があります。 以前画像を扱った際は、DBにそのまま画像データを格納していたのですが、一般的ではないということで画像パス使う方針にしました。 画像パスはthumbnailというカラムにvarcharで画像パスを格納しました。 今回ご相談させていただいた件では、主に画像の表示の部分にアドバイスをいただければと考えています。 以前画像をそのまま保存し表示するときは、get_image.phpのようなファイルを噛ませ、それをブラウザに読み込ませることで表示していたのですが、画像パスでも同じようなやり方でいいのでしょうか? ネットで調べてみたのですが、何となくしっくりこないというか、私の誤解もあるかもしれないのですがすっきりせず迷走中です。 どうか、アドバイスをご教示いただけないでしょうか。 ※以下は、試しにget_image.php噛ませてみた際のコードです。 <?php $id = $_GET['id']; //DB接続 ~省略~ $sql = "SELECT image FROM テーブル名 WHERE id='$id'"; $result = mysql_query($sql); if (!$result) { echo ("SQLの実行に失敗しました<BR>"); echo(mysql_errno().": ".mysql_error()); exit; } $row = mysql_fetch_array($result); mysql_close($con); $img_path = '$row['image']' $img = file_get_contents($img_path); header('Content-type: image/jpg'); echo $img; ?>

    • ベストアンサー
    • PHP
  • php アップロードファイルが*.csv指定の問題

    <form name="csvupload" id="csvupload" action="csvread.php" method="post" enctype="multipart/form-data" > <input type="hidden" name="MAX_FILE_SIZE" value="30000" /><br /> csvfile:<input type="file" name="uploadfile" size="50" accept="text/comma-separated-values" /> <input type="submit" name="hyosi" value="ファイル表示" /><br /> </form> htmlからファイルが選択して、php言語でそのファイルが*.csv拡張子で指定して、アップロードする。以下わたし作ったのサンプルで*.exeだとうまくいかなかった。初心者です。急ぎです。誰か助けてください。 if(isset($_POST['hyosi'])){ $file_dir = 'C:\apaches\Apache2\htdocs\practice\csvupload\csvfile\\'; $file_path = $file_dir.$_FILES['uploadfile']['name']; if(!is_uploaded_file($_FILES['uploadfile']['tmp_name'])){ print'*.csvhh拡張子のファイルを参照してください。'; exit; } elseif(strtoupper(substr(trim($_FILES['uploadfile']['name']),-4))!=".CSV"){ print'*.csv拡張子のファイルを参照してください。'; exit; } elseif(strtoupper(substr(trim($_FILES['uploadfile']['name']),-3))=="EXE"){ print'*.csvrrr拡張子のファイルを参照してください。'; exit; /* elseif(preg_match("/^.*\.(?!csv)$/",$_FILES['uploadfile']['name'])){ print'*.csv拡張子のファイルを参照してください。'; exit; */ } elseif($_FILES['uploadfile']['name'] == '' && $_FILES['uploadfile']['size'] == 0){ print'ngngng'; exit; } else{ if(move_uploaded_file($_FILES['uploadfile']['tmp_name'],$file_path)){ $csv_dir = "./csvfile/"; $csv_path = $csv_dir.$_FILES['uploadfile']['name']; $sfile = addslashes($csv_path); $_SESSION['file'] =$sfile; $file=fopen($sfile ,'r'); }else{ print '正常にアップロード処理されませんでした。'; exit; } } }

    • 締切済み
    • PHP
  • PHPでDBとディレクトリへの画像データ登録方法

    初めて質問させていただきますPHP初心者です。 画像投稿画面を作り、DB(imageフィールド)と任意のディレクトリ(member_picture)へ画像を保存するページを考えてます。 下記が作ったソースになるのですが、 id、message、titleフィールドにはちゃんと投稿内容が入るのですが、 どうしてもimageだけがフィールドにもディレクトリにも入りません。 アドバイスいただけますでしょうか。 <?php session_start(); if(!empty($_POST)) { //画像エラーの確認 $fileName = $_FILES['image']['name']; if(!empty($fileName)) { $ext = substr($fileName, -3); if($ext !='jpg') { $error['image'] = 'type'; } } if(empty($error)) { //画像をアップロードする $image = date('YmdHis') . $_FILES['image']['name']; move_uploaded_file($_FILES['image']['tmp_name'], '../member_picture/' . $image); $_SESSION['join'] = $_POST; $_SESSION['join']['image'] = $image; header('Location: content_upload.php'); } } //記録する if (!empty($_POST)) { if ($_POST['title'] !='') { $sql = sprintf('INSERT INTO post SET member_id=%d, message="%s", title="%s", image="%s", created=NOW()', mysql_real_escape_string($member['id']), mysql_real_escape_string($_POST['message']), mysql_real_escape_string($_POST['title']), mysql_real_escape_string($_POST['image']) ); mysql_query($sql) or die(mysql_error()); header('Location: content_upload.php'); } } ?> <!DOCTYPEうんぬん・・> <html うんぬん・・> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> <title>画像投稿ページ</title> </head> <body><div id="wrap"> <div id="head"><h1>画像投稿ページ</h1></div> <form action="" method="post" enctype="multipart/form-data"> <dl><dt>投稿画面</dt> <dd>画像<br> <input type="file" name="image" /> <?php if($error['image'] == 'type'): ?> <p class="error">* 画像は「.jpg」の画像を指定してください</p> <?php endif; ?> <?php if(!empty($error)): ?> <p class="error">* 恐れ入りますが、画像を改めて指定してください</p> <?php endif; ?> </dd> </dl> <div> <p><input type="submit" value="投稿する" /></p> </div> </form> </div> </div> </body> </html> 以上になります。 どこを注意したらいいのかもわからず困ってます! よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPデータをMYSQLに格納

    こちらのmysqlのフィールドが 1. CREATE TABLE `temp_upload` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(255) NOT NULL default '',`mime` varchar(255) NOT NULL default '',`image` longblob NOT NULL, `created` timestamp(14) NOT NULL, PRIMARY KEY (`id`)) の場合では下記のコードを入力してBLOBに画像の格納が出来ました。 # // 追加SQL作成 # $sql = sprintf( 'INSERT INTO temp_upload ( name, mime, image ) VALUES ( "%s", "%s", "%s" )', # mysql_real_escape_string( $_FILES['image']['name'] ), # mysql_real_escape_string( $_FILES['image']['type'] ), # mysql_real_escape_string( $image ) ); # # # $result = mysql_query( $sql ); # # header( sprintf( 'Location: %s', $_SERVER['SCRIPT_NAME'] ) ); # exit; # # } ただしもmysqlのフィールド数がもっとある場合はどのように記述をすればいいのでしょうか。 色々と調べ、なんども変更を加えて試してもみたのですがどうしてもmysqlにデータ・画像が格納されません。 こちらがその全然動かないコードになります。 $sql = sprintf( 'INSERT INTO temp_upload (sname, str_check1, sonohoka, train, ken, add1, stime, holiday, denwa, menu1, menu2,url, picname, mime, image ) VALUES ("$sname","$str_check1", "$sonohoka", "$train", "$ken", "$add1", "$stime", "$holiday", "$denwa", "$menu1", "$menu2","$url", "%s", "%s", "%s" )',     mysql_real_escape_string( $_FILES['image']['picname'] ), mysql_real_escape_string( $_FILES['image']['type'] ), mysql_real_escape_string( $image ) ); $result = mysql_query( $sql ); header( sprintf( 'Location: %s', $_SERVER['SCRIPT_NAME'] ) ); exit; } 大変申し訳ないのですが、どなたかお分かりになるかたご教授お願い出来ませんでしょうか?

    • 締切済み
    • PHP
  • 携帯サイトの画像アップロード[PHP+MySQL]

    携帯サイトの会員マイページで 個人の画像をアップできる仕様を制作したいのですが (ブログやsnsサイトによくある、アバターの代わりに  画像をアップできる仕様です) どうしてもDBの更新・画像のアップロード、双方ができず 困り果てております。 ※メールエラーログをみてみたところ、  メールをトリガーとしてプログラム自体は動作していた  ものの、処理が途中でストップされておりました。 具体的には、下記のような仕様を考えています。 (1)アップしたい画像を添付して携帯メールを送信 (2)メールをトリガーとして画像アップロード&DB更新  プログラム起動 ~以下プログラムの中身の動作~ (3)届いたメールアドレス(拡張メールアドレス)から会員ID情報を  取得 (4)会員情報テーブル(sns_user)にマッチする会員IDの列の  image_pathの項目にアップロードした画像のパスが  更新される。  PHP+MySQLで制作中です。  「update テーブル名 set where 条件~」で調べてみたものの、  どうしても分からず質問させていただきました。  どなたかお分かりになられる方がいらっしゃいましたら  ご教授いただけませんでしょうか。 以下ソース内容 // ユーザー&認証コードチェック if ($user&&$auth_code==getAuthCode($user['id'], $user['auth_string'])) { // 認証OK // マルチパートの場合のみメールを解析して画像を取得 if (strtolower($structure->ctype_primary) == "multipart") { $images = getImage($structure->parts); } $image_save_path = null; // 画像リストの中から1つだけ画像を取得する foreach ($images as $image) { // コンテンツタイプのチェック if ($image['type'] == 'image/jpeg' || $image['type'] == 'image/gif' || $image['type'] == 'image/png') { // ファイルとして保存 // 一時ファイルパス $temp_path = tempnam('/tmp', 'img_'); if ($temp_path == false) { // error break; } $fp = fopen($temp_path, 'w'); if ($fp == false) { // error break; } fwrite($fp, $image['body']); fclose($fp); // 画像の形式と縦横サイズを取得 list($width, $height, $type) = getimagesize($temp_path); // 認識できる形式であれば、所定のメソッドで開く $ext = ".jpg"; $imageSource = null; if ($type == IMAGETYPE_GIF) { $imageSource = imagecreatefromgif($temp_path); $ext = ".gif"; } else if ($type == IMAGETYPE_JPEG) { $imageSource = imagecreatefromjpeg($temp_path); } else if ($type == IMAGETYPE_PNG) { $imageSource = imagecreatefrompng($temp_path); $ext = ".png"; } // 一時ファイルを消す unlink($temp_path); if ($imageSource) { // ファイル名決定 $path = tempnam($image_dir, ''); $image_save_path = $path . $ext; // 画像をケータイディレクトリへファイル保存 imagejpeg($imageSource, $image_save_path); imagedestroy($imageSource); break; } } } if ($image_save_path) { // 差出人取得 $from = getFrom($structure->headers['from']); $params = array(); $params[] = $user['id']; $params[] = $image_save_path; // データベースへ接続する // if ($db = connectDB($db_user, $db_pass, $db_name, $db_host, true)) { $sql = "update sns_users set image_path = '$image_save_path' where id = '" . mysql_real_escape_string( $_SESSION['id'] ) . "'"; execQuery($db, $query, $params); } } $query = "select * from sns_users where id = ''"; $result = mysql_query( $query ); $user = mysql_fetch_array( $result ); // データベースを閉じる closeDB($db); } ?>

    • 締切済み
    • PHP
  • PHPで画像をアップロード&保存したいのですが..

    初心者です. ブラウザから画像をアップロードし保存できるようにしたく, サンプルを基に以下のようなソースを書いてみたのですが, 画像の保存ができません. もし直さなければいけないところがわかる人がいらっしゃいましたら ぜひ教えてください. よろしくお願いいたします. <?php $img_name = $_FILES["img_path"]["name"]; $img_size = $_FILES["img_path"]["size"]; $img_type = $_FILES["img_path"]["type"]; $img_tmp = $_FILES["img_path"]["tmp_name"]; if($_REQUEST["up"] != ""){ if($img_tmp != "" and $img_size <= 30000){ $img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type <br>一時的に保存されているパスは: $img_tmp <br>"; }else{ $size_error = "サイズが大きすぎます。ファイルサイズは30キロバイト以下です。"; } } $FilePath = "./img/".src.".".GetExt($img_name); move_uploaded_file($img_temp,$FilePath); //GetExt function GetExt($FilePath){ $f = strrev($FilePath); $ext = substr($f, 0, strpos($f,".")); return strrev($ext); } ?>

    • 締切済み
    • PHP
  • スマートフォンから画像のアップロード

    スマートフォン用サイトで画像のアップロード機能を実装しようと思っています。 PCサイト用に作成したものをそのまま流用しようと思ったのですが、 うまくいきませんでした。 対応する画像はjpg,gif,pngの三種類です。 下記がPC用のソースです。 <form action="edit_url" method="POST" enctype="multipart/form-data"> <input type="file" name="Img" size="10"> </form> フォーム受け取り先で if(is_uploaded_file($_FILES['Img']['tmp_name'])){ //jpg,gif,png以外のファイルの場合はエラー if($_FILES['Img']['type'] != "image/pjpeg" AND $_FILES['Img']['type'] != "image/jpeg" AND $_FILES['Img']['type'] != "image/png" AND $_FILES['Img']['type'] != "image/gif"){ echo "エラー"; } } とすると「エラー」が表示されます。 $_FILES['Img']['type'] の中身を見ると 「application/octet-stream」 になっていました。 試してみた端末はandroid4.0の端末で、デフォルトブラウザを使用しました。 スマートフォンから画像をアップロードするには、 どのようにしたらよいのでしょうか。

    • ベストアンサー
    • PHP