画像をDBに登録できない

このQ&Aのポイント
  • DBに画像を登録するプログラムを作成中ですが、登録できません。
  • 画像のファイルサイズは問題ではないことを確認しました。
  • 原因と対策を教えていただけると助かります。
回答を見る
  • ベストアンサー

画像をDBに登録できない

現在、DBに画像を登録するプログラムを作成しているのですが、登録できません。ファイルの大きさが問題なのかと思い、小さい画像(1.5M)でためしてみましたが、やはりできませんでした。 DBのフィールド名なども正しいことを確認しています。 原因、対策がわかる方がいらっしゃいましたら教えてください。 よろしくお願いします。 ---------------------- <?php if($_POST["submit"]=="upload") { // データベースに接続する処理。 略 mysql_select_db( $dbname ); mysql_set_charset("utf8"); // 文字コードを指定します。 // ファイル情報を取得 $file = $_FILES["userfile"]["name"];// 元のファイル名 $type = $_FILES["userfile"]["type"];// MIME型 $tmpname = $_FILES["userfile"]["tmp_name"];// テンポラリファイル名 $size = $_FILES["userfile']['size"];//サイズ // 画像サイズを取得 list($width, $height) = getimagesize($tmpname); // 画像データを取得 $contents = file_get_contents($tmpname); // エンコード $contents = base64_encode($contents); // SQL用にエスケープ $contents = mysql_real_escape_string($contents,$conn); // 格納 $strsql = "INSERT INTO DBpractice ("."size, imgtype, width, height, imgdata ".") values ( "."$size, '{$type}', $width, $height, '{$contents}'".");"; $res = mysql_query($strsql,$conn); print mysql_error($conn); echo "更新を完了しました。"; mysql_close($conn); } ?> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>test</title> <link href="common/css/base.css" rel="stylesheet" type="text/css" /> </head> <body> <form name="rfform" action="<?=$_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data" method="post"> <input type="hidden" name="act" value="upload"> <input type="file" name="userfile"> <input type="submit" name="submit" value="アップロード"> </form> </body> </html> ---------------------------

  • PHP
  • 回答数9
  • ありがとう数7

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

  • ベストアンサー
  • shaka001
  • ベストアンサー率60% (23/38)
回答No.8

><?=変数?>をつかうためには、php.iniの設定が必要であるということは知りませんでした。どのような設定が必要なのでしょうか。 php.iniのshort_open_tagがonになっていることですが、action要素に$_SERVER['PHP_SELF'] の値が挿入されているようなので問題ないようですね。 >修正後、試しましたがやはり結果は同じです。 echo で$fileなどが表示されるようになっていませんか? 正直なところ、他にも全角スペースがないかを含め、ソースを最初から全部見直したほうがいいと思います。 その際は、php.iniの設定で、phpのエラーを画面で表示するようにしたほうがいいですね。 レンタルサーバーだと、 .htaccessが使えないと駄目ですけど。 一度、ローカルに環境を整えてそこで試してからサーバーに上げるようにしたほうがいいように思います。

tanakataro2010
質問者

お礼

あれからスペースを確認したり、色々と思考錯誤した結果なんとか登録することができました。昨日反映されていなかったデータが今日になってDBに反映されていたりと、正直どこが決定的なミスだったのか自分でもよくわからないのですが、解決できてよかったです。 有益なアドバイスを沢山いただきありがとうございました。

その他の回答 (8)

回答No.9

> INSERT INTO DBpractice (size, imgtype, width, height, imgdata ) values ( , '', 41, 50, '/9j/4AAQSkZJRgABAQAAAQABAAD ということは、sizeとimgtypeにまともな値が入っていないことからクエリーエラーがおきているのでしょう。 sizeについて: > $size = $_FILES["userfile']['size"];//サイズ 囲み記号において"と'が混在しているので統一しましょう。 $size = $_FILES["userfile"]["size"];//サイズ imgtypeについて: > $type = $_FILES["userfile"]["type"];// MIME型 これに値が入らないのが不思議ですね。わかりません。 ただ、とりあえず私だったら以下のようにするかな。 1. アップロード前のファイルが本当に画像ファイルか 2. アップロード前のファイル名において画像らしい拡張子がついているか 3. プログラム処理において、例えば想定するMIMEがimage/gifとimage/jpegなら、   $typeがそれらと等しいか確認してどれとも一致しなければ、エラーなどを表示し、   クエリ(insert ...)には進まないようにする

tanakataro2010
質問者

お礼

ご回答ありがとうございます。無事、解決いたしました。 いただいたアドバイスは次回以降の参考にさせていただきます。 ありがとうございました。

  • shaka001
  • ベストアンサー率60% (23/38)
回答No.7

上記HTML部分をコピーして、$fileなどを表示させてみましたが問題ありませんでした。 初歩的なところではありますが、上記ソースでは$fileなどの変数と=の間が全角スペースになっていますが 実際は半角スペースですよね? また、formタグのaction要素の部分を<?=変数?>としていますが、php.iniの設定はしてあるんですよね? 画面で、ソースの表示をした際のaction要素はどうなっているでしょうか?

tanakataro2010
質問者

補足

ご指摘箇所の半角スペースは気付いていませんでした。 修正後、試しましたがやはり結果は同じです。 <?=変数?>の部分は、ソース上では、以下のようになっています。この状態は正しいのでしょうか。 action="/XXXXX/upload.php ※XXXXはupload.phpが入っているフォルダ名 <?=変数?>をつかうためには、php.iniの設定が必要であるということは知りませんでした。どのような設定が必要なのでしょうか。 もし参考サイトなどがあれば教えてください。(現在、自分でも調査中ですが、よさそうなサイトを見つけることがまだできていません。) ちなみに環境は、サクラインターネットを使用しています。 ※プログラミング初心者のため、基本的事項がよくわかっておらずご迷惑をおかけし、申し訳ありません。よろしくお願いいたします。

  • shaka001
  • ベストアンサー率60% (23/38)
回答No.6

$_FILES["userfile"]["error"] の値はどうなっていますか? 1 ならばアップロードできるファイルサイズオーバーしています。 サイズが1MB以下のファイルで試してみてください。 アップロードできるファイルサイズを増やしたければphp.iniを修正してください。

tanakataro2010
質問者

補足

帰ってきた値は0でした。0 ということはファイルのアップロードは成功している ということを調べたのですが、やはりDBのテーブルには該当するデータは見当たりません。 何かもっと根本的なところで間違いをしているのでしょうか?

  • shaka001
  • ベストアンサー率60% (23/38)
回答No.5

$size = $_FILES["userfile']['size"]; とありますが $size = $_FILES["userfile"]["size"]; ではないでしょうか。 SQL文も$sizeの部分がおかしいようですし。 ちなみに、 '/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBkZWZhdWx0IHF1YWxpdHkK/9sAQwAIBgYHBgUIBwcH・・・・・・・・・ というのは、ファイルの内容なので問題ないかと思います。

tanakataro2010
質問者

補足

情報が前後してしまい、申し訳ありません。 さきほど、ご指摘部分も修正後 echo $strsql;を実行したところ上記のエラーとなりました。 サイズの部分がおかしいということは、やはりファイルの容量の問題なのでしょうか?? 何か他に原因がわかりますでしょうか??

  • shaka001
  • ベストアンサー率60% (23/38)
回答No.4

SQL文の構文が間違ってるというエラーのようですね。 $strsql を echo で表示するとどうなりますか?

tanakataro2010
質問者

補足

ありがとうございます。 echo をしたところ、以下のようなエラーが出ました。 width, height以外がうまく取得できていないように思えるのですが、取得部分が何かおかしいのでしょうか?? INSERT INTO DBpractice (size, imgtype, width, height, imgdata ) values ( , '', 41, 50, '/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBkZWZhdWx0IHF1YWxpdHkK/9sAQwAIBgYHBgUIBwcH・・・・・・・・・

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.3

こんにちは。 if ( $_POST['submit'] == 'upload' ) { } この条件がtrueにならないと思いますがいかがでしょうか。 <input type="submit" name="submit" value="アップロード"> という指定であれば$_POST['submit']の中身は"アップロード"になるはずです。 if ( $_POST['submit'] == 'アップロード' ) { } にするか if ( $_POST['act'] == 'upload' ) { } にしないとifの中は実行されないと思います。 なので、エラーメッセージも、画像の情報も表示されないんだと思います。

tanakataro2010
質問者

補足

ご回答 ありがとうございます。 おっしゃられる通り、valueとの整合性がおかしいですね。。 if ( $_POST['act'] == 'upload' ) { } に修正しましたところ、今度は以下のエラーがでました。 最後の方に'41''50'とあるのは、サイズのことをさしているのではないかと推測していますが、解決できずに困っています。解決策がおわかりであればご教授ください。 よろしくお願いいたします。 /var/tmp/phpkWq15A/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBkZWZhdWx0IHF1YWxpdHkK/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAMgApAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A8X05d91AvrKBX03arizhHpGv8q+aNGBbU7JfWdf5ive9e8VWnh2yjVl865ZAViBxgepPYVPUpbEfjaTy/Dd6en7lh+fFfPjNyx9q7bW/iBqOuafLaS2kKQzNs3pnIAIOOvtXFzwPASH6HgGqEyKQ/uPq1VqssoKAHoKZsWgRp6Ef+JzY56CZSfzFd14ftJvG+uXLynEbMXlc8lVPAUfQcVyHh+ylj8Q2Cyxnb5g57V6R8MNPcaRc30Usar553KUycKPXt1rKpLljdGtGPNKzNvVfhxo0ekxpCjRNGdysGySfUjvXlGrWKu9xEAN8WQQOzCvoSS1N7Krfa2i+X5olwA/HfPWvCviFatpfimaSDKpcqGwP7w4NZ0ZO9jbEU0lzJHEk4pMikk4kIYYJ5wabj2NdJyHWHUbeby/IZQ0a8sQR2rb8AeI006aXSpW2pdf6ts8CTpg/Xiti0+F2bC71KOeaG22u0Nve2xSY7c4zyMZ/lXm9xC6mS5UbFEgA29s5PH5Vk43umaqTjaSPpJXYWokkV4o1XLF8cn/CvHfiJOb3WUWKMsY0yFA7npn04qno/i7X7mQJPfvNBEuAJADg9j9frU0snmM0rNvcnLbuc0UqLUrsurXUlZHF3kF1Ko8+LDoPvHGSP61Q8lvQ/lXa3G0g8ZB9azvs0f8AdX8hXQ4nNc+lYXabTJhKxkG0jDnNfNuvxpFfTpGioodgAowOpoorlpm09iTRwBZEjuxq7k5PNFFdcdjFkM33B+NV6KKoR//ZYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' '', 41, 50, '/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2' at line 1

回答No.2

> 現在、DBに画像を登録するプログラムを作成しているのですが、登録できません。 どうやって登録できないことがわかりましたか。 私の過去の失敗では、実は登録出来ていたけど取り出し方が間違っていたというのがありました。 > $file = $_FILES["userfile"]["name"];// 元のファイル名 > $type = $_FILES["userfile"]["type"];// MIME型 > $tmpname = $_FILES["userfile"]["tmp_name"];// テンポラリファイル名 > $size = $_FILES["userfile']['size"];//サイズ > list($width, $height) = getimagesize($tmpname); > $contents = file_get_contents($tmpname); > $res = mysql_query($strsql,$conn); これらの値が真または適切(そう)な値であるか、echoで確認してみましょう。 > print mysql_error($conn); これでどんなメッセージが表示されましたか。それを公開しましょう。 もしエラーメッセージが無いのなら、繰り返しになりますが、登録は出来ているのかもしれません。

tanakataro2010
質問者

補足

登録できていないということは、実際のテーブルに何の値も入っていないことから確認しているのですが、何か間違っているでしょうか。 print mysql_error($conn); では何のメッセージも表示されず、また以下を格納の前に行ってみましたが何の表示もされませんでした。(書き方や場所などが間違っているのでしょうか、、、) echo $file; echo $type; echo $tmpname; echo $size; echo $contents; ちなみに、ブラウザ画面上の動きとしては、アップロードボタンを押すと、「ファイルが選択されていません」という状態に戻ってしまう状況です。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

> DBのフィールド名なども正しいことを確認しています。 フィールドの型は どうなってますか? 1.5Mって大概デカいかと思いますが。 とりあえず、試しに longblob とかにしてみてはどうでしょう。

tanakataro2010
質問者

補足

ご回答ありがとうございます。 フィールド型はblob型でしたので、longblobで試してみましたがやはり無理でした。。 .gifや.jpgなど拡張子も変えてみたりしてみたのですが同じでした。 何か他に原因はありますでしょうか?

関連するQ&A

  • $_FIILESで受け取った画像を、すぐに表示するには?

    お忙しい中お読み頂きありがとうございます。 下記の様に、$_FILESで受け取った画像データを、 すぐに<IMG>タグで表示できないのでしょうか? 同じページで反映したいのですが、上手くいきません。 どんなアドバイスでも構いませんので、ご教授お願い致します。 $name = $_FILES['userfile']['name']; $tmp_name = $_FILES['userfile']['tmp_name']; list($width, $height) = @getimagesize($tmp_name); <IMG src="$name" width="$width" heigth="$height">

    • ベストアンサー
    • PHP
  • PHPとMySQLを使い、画像データベースを構築しています。

    PHPとMySQLを使い、画像データベースを構築しています。 以下までできたのですが、SQL syntaxエラーが発生してしまい、UP出来ませんでした。 画像を指定しない場合は、成功します。 <form method="post" action="addinfo.php" enctype="multipart/form-data"> Place Name(*)<br> <input type="text" size="50" maxlength="100" name="place_name"><br> Address(*)<br> <input type="text" size="50" maxlength="100" name="address"><br> Pictures<br> <input type="file" size="50" name="picture1"><br> <input type="file" size="50" name="picture2"><br> <input type="file" size="50" name="picture3"><br> <input type="reset" value="Reset" name ="reset"> <input type="submit" value="Submit" name="submit"> </form> <?php if ($_POST["submit"] != "") { // Connecting DB require 'lib.php'; //img1 if ($_FILES["picture1"]["tmp_name"] != NULL) { $fp = fopen($_FILES["picture1"]["tmp_name"], "rb"); if (!$fp) { print("Cannot open the uploaded file <BR>\n"); exit; } $img1 = fread($fp, filesize($_FILES["picture1"]["tmp_name"])); fclose($fp); } ----------------------------------------------------------- img2, img3についての処理もimg1と同じなので、文字数の関係で省略します ----------------------------------------------------------- // Insert Query $sql = "INSERT INTO places (place_name, address, `picture1`, `picture2`, `picture3`) VALUES('{$_POST["place_name"]}','{$_POST["address"]}', '{$img1}', '{$img2}', '{$img3}') "; $result = mysql_query($sql); if (!$result) { print("QUERRY ERROR<BR>\n"); print(mysql_errno() . ": " . mysql_error() . "<BR>\n"); exit; } echo "UPLOAD SUCCESSFULL "; ご教授お願いいたします

    • ベストアンサー
    • MySQL
  • PHP4 LINUXサーバー

    「PHP4でカンタンWebDB構築ガイド」を見て、ファイルのアップロードのプログラムを書いてみましたが、参照..→送信の後に表示される筈のuserfile,user_file_name,user_file_size,user_file_typeの情報が表示されません。 また、このサンプルソフトでは、サーバーにアップロードされた筈のファイルが、具体的に何処のフォルダにアップロードされたのか分かりません。何処かデフォルトで保存される場所でもあるのでしょうか? <FORM ENCTYPE="multipart/form-data" ACTION="upload.php" METHOD=POST> <INPUT TYPE ="hidden" name="MAX_FILE_SIZE" value="1000"> <INPUT NAME="userfile" TYPE="file"> <INPUT TYPE="submit" VALUE="送信"> </FORM> <?php print "\$userfile = ". $userfile . "<BR>"; print "\$userfile_name = ". $userfile_name . "<BR>"; print "\$userfile_size = ". $userfile_size . "<BR>"; print "\$userfilei_type = ". $userfile_type . "<BR>"; ?>

    • ベストアンサー
    • PHP
  • ファイルアップロードについて

    環境: OS/Vine Linux 3.2 Apache 2.0.55 mod_ssl 2.0.55 OpenSSL 0.9.7d PHP 5.1.2 上記の環境で簡単なファイルアップ処理をPHPで 試みようと思っていますが、できなく困っています。 HTMLからフォームを使って ファイルを選択した後に、「Send File」ボタンを 押してもまずファイルサイズが取得できません。 print_r($_FILES)を確認すると、 「Array ( [userfile] => Array ( [name] => test.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 ) ) 」とクライアントマシンの元ファイル名とエラーコードのみ表示されます。 ちなみにupload_max_filesizeは2Mで設定しています。 なので、MAX_FILE_SIZEは2Mになりますよね?? どなたかご教授下さい。よろしくお願いいたします。 ソース: 【html】 <form enctype="multipart/form-data" action="b.php" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="30000"> Send this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form> 【php】 <?php print_r($_FILES); //続く....... ?>

    • ベストアンサー
    • PHP
  • 画像の保存についての質問です。

    ----get_bk_img.php---- ・・・・・ ・・・・・ <table width="740" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td> <a href="../index.html">TOP PAGE</a><br><br> <strong>保存する物件の写真を設定してください</strong><br> <?php $add_temp = $_FILES['up_fl']['tmp_name']; $add_name = $_FILES['up_fl']['name']; $add_type = $_FILES['up_fl']['type']; echo "temp:[".$add_temp."]<br>\n"; echo "name:[".$add_name."]<br>\n"; echo "type:[".$add_type."]<br>\n"; /*------------------------*/ /* -- データベース接続 -- */ /*------------------------*/   ・・・・・・・・   ・・・・・・・・   ・・・・・・・・ /*------------------------*/ /* -- データベース切断 -- */ /*------------------------*/ mysql_close($db); ?> <table width="740" border="1" cellpadding="15" bordercolor="#333333" align="center" cellspacing="0"> <form name=form1 method=post action=get_bk_img.php> <tr> <td bgcolor="#00CCFF">ファイル選択</td> <td bgcolor="#FFFFFF"> <input type=file name=up_fl value=""> <input type=hidden name=action value=hozon> <input type=hidden name=no value="<?php print($_POST['no']) ?>" > <input type=submit value="保存"> </td> </tr> </form> </table> <br> <table width="740" border="1" cellpadding="15" bordercolor="#333333" align="center" cellspacing="0"> <form name="form1" method="post" action="get_bk_img.php"> <tr> <td bgcolor="#00CCFF">保存ファイル一覧</td> <td bgcolor="#FFFFFF"> <select name="bu_file"> <?php print_r( $select_arr ) ?> </select> <input type="hidden" name="action" value="delete"> <input type="submit" value="削除"> </td> </tr> </form> </table> </table> </body> </html> としてるんですが、 echo "temp:[".$add_temp."]<br>\n"; echo "name:[".$add_name."]<br>\n"; echo "type:[".$add_type."]<br>\n"; の部分で表示されません。(値が空?) 書き方が間違ってますか?

    • ベストアンサー
    • PHP
  • MySQLでGETで2件同じものが登録されてしまいます

    PHP、MySQLとも初心者で、お世話になっています。 <form name="~" method="GET" action="~.php"> 入力1<input type="text" name="na1"><br> 入力2<input type="text" name="na2"><br> <input type="submit" value="送信"> </form> で送信し、PHP側で $tem1=$_GET["na1"]; $tem2=$_GET["na2"]; mysql_select_db("~"); mysql_query("insert into tb1 values (\"$tem1\",\"$tem2\")"); とすると、結果的に同じデータが2件登録されてしまいます。 何が問題なのでしょうか。 教えていただけるとありがたいのですが。 どうか、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 「送信」「クリア」ボタンを画像で表示したい

    formタグを使ったお問合せフォームを作っているのですが、「送信する」ボタンと「クリアする」ボタンを画像で表示させる方法を教えてください。現在 <INPUT name="submit" TYPE="image" id="submit" SRC="xxx.jpg" alt="送信する" WIDTH="110" HEIGHT="25" BORDER="0"> <INPUT name="reset" TYPE="image" id="reset" src="xxx.jpg" alt="クリア" width="75" height="25" border="0"> というように記述しているのですが、クリアボタンを押しても「送信」されてしまいます。 type="image"は送信だけでしょうか、他にありましたら教えてくださいm(_ _)m

    • ベストアンサー
    • HTML
  • 初心者ですみません。画像ファイルのアップロードについて

    任意の画像ファイルをHTMLフォームで入力して 登録確認画面に渡した後、ファイルをアップロード したいのですが上手くいきません。 ・フォーム入力ページ <FORM action="登録確認ページ.php" method="POST" enctype="multipart/form-data"> <INPUT type="file" name="uploadfile" size="50"> <INPUT type="submit" name="reg" value="OK"> ↓ ・登録確認ページ $uploadfile = $_FILES['uploadfile']; move_uploaded_file($uploadfile, "$PHOTOTMP$imagefile"); $body .= "<IMG src='$PHOTOTMP$imagefile' width='240' height='180'>"; として、登録確認ページでアップロードする 画像ファイルをいったん表示させてから 最終的にアップロードさせたいのですが 「×」マークが出て画像が表示されません。 データの受け渡しが上手くできていないのでしょうか。 どなたか教えて下さい。よろしくお願いします。

    • ベストアンサー
    • PHP
  • 画像アップ

    php初心者です 簡単な画像アップロードを付けたいと思っています それでアップだけはなんとかできたのですが、もう少し機能を付けたいです 付けたい機能は 1.拡張子を調べて限定したい。gif、jpg、pngの三つを許可したい 2.画像の横と縦の幅が指定した幅より大きければ、指定した幅まで縦横比維持で縮小 100*100 3.もう一つのディレクトリに、小さいサムネイルを作りたい。大きさは32*32です 4.拡張子はそのままにして画像の名前をリネームしたいです よろしくお願いします(_ _ <?php $img_name = $_FILES["upfile"]["name"]; $img_size = $_FILES["upfile"]["size"]; $img_type = $_FILES["upfile"]["type"]; if($_REQUEST["up"] != ""){ if($img_tmp != "" and $img_size <= 50000){ $img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type"; if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0604); print $_FILES["upfile"]["name"] . "をアップロードしました。"; } else { print "ファイルをアップロードできません。"; } } else { print "ファイルが選択されていません。"; } }else{ $size_error = "サイズが大きすぎます"; } } ?> <html> <head> <title>画像アップロード</title> </head> <body> <form name="form" action="" method="POST" ENCTYPE="MULTIPART/FORM-DATA"> <input name="upfile" type="file" size="40"> <input name="up" type="submit" value="アップロード"><hr> </form> <?php print($size_error); ?><?php print($img_message); ?> </body> </html>

    • ベストアンサー
    • PHP
  • ファイルのアップロードができません

    今日始めたばかりの初心者です。 PHPだとCGIに比べ、ファイルのアップロードとか画像の処理が簡単に行えそうなのでチャレンジしてみたのですが、いきなりつまづいてしまいました。 とりあえずファイルをアップロードしてみようと思い、下のようなサンプルをアップロードしてみたのですが、さっぱり動きません。 適当なjpgファイルをアップロードすれば、スクリプトのあるディレクトリに”aaa.jpg”という名前で保存すると思うのですが…。 最後の”var_dump($_FILES);”という命令で、アップロードされたファイルの内容を表示させてるはずなのですが、ファイル送信前も後も”array(0) {}”としか表示されません。 PHPのバージョンは4.34です。 どなたかご教授お願いします。 ************************ <form enctype="multipart/form-data" method="post"> Upload File:<input name="userfile" type="file"> <input type="submit" value="Send File"> </form> <pre> <?php if (!empty($_FILES)) { move_uploaded_file($_FILES['userfile']['tmp_name'],'aaa.jpg'); } var_dump($_FILES); ?> </pre> ************************

    • ベストアンサー
    • PHP

専門家に質問してみよう