• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:csvを使った画像データの保存と表示)

csvを使った画像データの保存と表示

このQ&Aのポイント
  • csvを利用した画像データの保存と表示についての質問です。
  • 画像の説明と画像データをcsvファイルに保存し、表示する方法について教えてください。
  • 現在画像の保存ができず、参照や編集もできない状況です。解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.2

base64_encode(file_get_contents($_FILES["file"]["tmp_name"])) で画像のBASE64エンコードされたデータが取れます。 また、 $_FILES["file"]["type"] はユーザー側で偽装することが可能なので、この値は信用してはいけません。 getimagesize関数の返り値を利用するのが一番ラクです。 画像でないときはFALSEが返り、画像であるときは返り値配列のキー「mime」で返ります。 前の回答で提示したものにも含まれていますが、こちらを熟読して模倣してみてください。 ファイルアップロードに関して http://qiita.com/mpyw/items/939964377766a54d4682 http://qiita.com/mpyw/items/73ee77a9535cc65eff1e 外部からの変数受け取りに関して http://qiita.com/mpyw/items/2f9955db1c02eeef43ea http://qiita.com/mpyw/items/c39b9ee695a5c2e74627

uran24
質問者

お礼

ありがとうございます.無事エンコードを行いCSVへ出力できました. これからデコードに挑戦して表示・編集・検索の画面で表示を確認できるように作業をします. ご提示いただいた内容も読んでセキュリティを試みてみます.

その他の回答 (1)

noname#244856
noname#244856
回答No.1

>> phpのバージョンは5を使っています. マイナーバージョンまで提示してください。 むしろ5であることは当たり前です。 【例】 PHP5.4.1 画像を保存するなら個人的にはデータベース1択ですが、CSVでどうしても実現したいならBASE64エンコードを採用するのが一番いいでしょうね。 http://www.php.net/manual/ja/function.base64-encode.php http://php.net/manual/ja/function.base64-decode.php エンコードしてしまえばただのテキストデータと同じになります。 こちらもお読みください。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10111723870

uran24
質問者

補足

ありがとうございます.さっそくいろいろと書いてみましたが対象のファイル名を変数で渡す所がうまく行きません. 文字数の関係で全ての掲載がかないませんので抜粋的に記載させていただきます. PHPのバージョンはPHP Version 5.3.15となります. ~ //画像データをエンコードする $input_pict = ($_FILES["file"]["name"]); echo base64_encode($input_pict); //これだと当たり前ですがファイル名がエンコードされcsvに登録されます.いろいろ試しましたが画像データをエンコードした物が出力されません. print <<<_EOT_ <form method="POST" enctype="multipart/form-data" action="touroku.php"> ~ //HTMLでPC上の画像を選択する部分 <td>画像</td> <td><input type="file" name="file"></td> <td><input type="hidden" name="MAX_FILE_SIZE" value="102400"></td> <td><input type="hidden" name="mode1" value="upload"></td> </tr> <tr> <td colspan="2" align="right"> <input type="submit" value="追加"> <input type="hidden" name="mode" value="insert"> </td> ~ _EOT_; //画像のアップロードを行う部分 こちらは正しくupできております. if($_POST["mode1"] == "upload") { // エラーチェック switch ($_FILES["file"]["error"]) { case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: error("サイズ制限を超えています。"); case UPLOAD_ERR_PARTIAL: case UPLOAD_ERR_NO_FILE: error("アップロードできませんでした。"); } // 念のためファイルサイズを再チェック if($_FILES["file"]["size"] > 1024 * 100) { error("サイズ制限を超えています。"); } // pngとjpeg以外のファイルを拒否 if(!preg_match("/^image\/.*(png|jpeg)$/i", $_FILES["file"]["type"])) { error("ファイル形式が不正です。"); } // 特定の文字以外の文字を使用したファイル名を拒否 if(preg_match("/[^\w\d\-\.]/", $_FILES["file"]["name"])) { error("ファイル名が不正です。"); } // ファイルを移動 $upload_file = UPLOAD_DIR . $_FILES["file"]["name"]; if(move_uploaded_file($_FILES["file"]["tmp_name"], $upload_file)) { chmod($upload_file, 0644); $img_size = getimagesize($upload_file); print "次のファイルをアップロードしました。<br>\n"; print '<img src="' . $upload_file . '" '; print $img_size[3] . ' border="0">'; } else { error("アップロードできませんでした。"); } } お気づきの点あればご教授いただけると助かります.

関連するQ&A

専門家に質問してみよう