PHPで複数の画像を同時にアップロードする方法

このQ&Aのポイント
  • PHPで複数の画像を同時にアップロードする方法について知りたいです。現在、jpg、png、bmp、gifの画像ファイルをアップロード可能にしていますが、同時に5つまで10MB以内でアップロードできるようにしたいです。
  • 現在のコードでは、画像ファイルの種類を検証し、サイズが制限値以下であるかもチェックしています。また、ファイルのアップロードに失敗した場合はエラーメッセージを表示しています。
  • 現在の方法では一つずつ画像をアップロードしていますが、同時に複数の画像をアップロードするにはどのような変更を行えば良いのでしょうか。
回答を見る
  • ベストアンサー

PHPで複数の画像を同時にアップロードする方法

OS = WINXP Pro SP2、Server = An Httpd、PHP = PHP5の環境にてDevelopmentしております。 質問です。PHPで複数の画像を同時にアップロードする方法が知りたいです。現在、jpg,png,bmp,gifを アップロード可能にしているのですが、同時に5つまで10MB以内でUploadできるようにしたいのですが、 if(strlen($uploadfile) > 0 ) { $fileinfo = pathinfo($uploadfile_name); $fileext = strtoupper($fileinfo["extension"]); if ($uploadfile_size > 10002400) { $errmsg .= "<font color='#555555'>画像ファイルのサイズが大きすぎます。3MB以下にしてください。<BR>"; } elseif ($uploadfile_size == 0) { $errmsg .= "<font color='#555555'>画像ファイルが存在しないか空のファイルです。</font><BR>"; } if (($fileext=='JPG')||($fileext=='GIF')||($fileext=='BMP')||($fileext=='PNG')){ if ($fileext == "JPG") { $mictime = microtime(); $imgfilename = substr($mictime, 11) . substr($mictime, 2, 6) . ".jpg"; chmod($uploadfile,0755); if (!move_uploaded_file($uploadfile, "upload/$imgfilename")) { $errmsg .= "<font color='#555555'>ファイルのアップロードに失敗しました。</font><BR>"; } } ... この様な感じで現在はやっていますが、これのどの様に変更すれば同時にアップロードできるようになるのでしょうか。どうぞ宜しくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

困った時の神頼み、ではなく、PHPマニュアル頼みと言う事で。 http://www.php.net/manual/ja/features.file-upload.php PHPマニュアルのファイルのアップロード項、例 38-3に複数ファイルのアップロード方法が載っています。 単に配列とすればOKデス。

sato777
質問者

お礼

お返事有り難う御座いました。

関連するQ&A

  • ファイルのアップロード mysql

    現在PHPを使いファイルのアップロードをしようとしているのですが 途中でいきずまってしまいました。自分がしたいことですが フォームからファイル(画像:jpgのみ)をMYSQLにアップロードし、必要に応じてその画像を出力するということです。また画像のサイズも決めてそれ以上ならエラーを出すということです。こちらが今あるスクリプトになります。 途中まではなんとなく分かったのですがどうしても続きが分かりません。 ちなみにphp.iniの設定は色々調べたのであっていると思います。 またMYSQLのカラムはBLOBになっており、下記にinsert into~の文もあります。 form.php <form name="order" action="form.php" method="post" enctype="multipart/form-data"> <input name="MAX_FILE_SIZE" type="hidden" value="1000000" /> <input name="uploadfile" type="file" size="60" /> </form> <?php $uploadfile_name = $_FILES["uploadfile"]["name"]; $uploadfile_tmp_name = $_FILES["uploadfile"]["tmp_name"]; $uploadfile_size = $_FILES["uploadfile"]["size"]; if (strlen($uploadfile_name) > 0 ) { $fileinfo = pathinfo($uploadfile_name); $fileext = strtoupper($fileinfo["extension"]); $err_msg = ""; //ファイルのサイズチェック if ($uploadfile_size > 1000000 ) { $err_msg .= "テキストファイルが大きすぎます。1MB以下にして下さい。<br />"; } //ファイルの拡張子チェック elseif ($fileext != "jpg") { $err_msg .= ".jpg形式以外のファイルは登録できません。<br />"; } if( //どのようにしれMYSQLに保存するのかここら辺から分からなくなっています。 } } } $sql = "insert into ccc values('$upload_file')"; どなたかご存知の方おりましたらお伺い出来ませんでしょうか。 宜しくお願い致します。

    • 締切済み
    • PHP
  • php ファイルのアップロード

    ファイルを updir のフォルダにアップロードしたいのですが 上手くいきません。 「ファイルアップロード失敗」 が表示されます。 ファイル名はそのままでアップしたいと思っています。 <tr> <td align="right">PDF:</td> <td> <input type=file name="update_p_pdf" size="50"> </td> </tr> ↑上のはちゃんと動いていると思います。 ↓下のがどうしても「ファイルアップロード失敗」になります。 ファイルの名前を変更しようとは思っていません。 とりあえず updir のフォルダにファイルを入れたいです。 //PDF入力 <? $uploadfile = "./updir/".$addres.".pdf"; print "<pre>"; if(move_uploaded_file($_FILES['update_p_pdf']['tmp_name'], $uploadfile)) { ?> <font color="blue">ファイルアップロード成功</font> <?php } else { ?> <font color="red">ファイルアップロード失敗</font> <?php } ?> //PDF 元のデータです。 http://proxy.f2.ymdb.yahoofs.jp/bc/269445e1/bc/5c56/admin.php?bcPbuTGBxi28K6X1

    • 締切済み
    • PHP
  • アップロードしたGIF画像を縮小

    画像をアップロードした際にリサイズするプログラムを作っています。 jpegとgif形式アップロードを考えています。jpegのアップロードは うまく作動しますが、gifをアップロードしても画像はサーバにアップできるのですが、縮小処理がされていません。 その際に表示されるエラーは以下です。 Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /***/***/***/***/***/uploader.php on line 82 Warning: imagegif(): supplied argument is not a valid Image resource in /***/***/***/***/***/uploader.php on line 83 ■ソースは以下です。 フォーム部分 <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES); ?>" method="post" enctype="multipart/form-data"> <table class="main1 table001" align="center" cellpadding="5" cellspacing="0"> <tr> <th nowrap>画像ファイル1<br>(gif,jpgのみ)</th> <td nowrap><input type="file" name="gra1" size="50"></td> </tr> <tr> <td colspan="2"><input type="submit" name="confirm" value="  確認画面へ  " />&nbsp;&nbsp;<input type="submit" name="reset" value="リセット" /></td> </tr> </table> </form> 縮小処理部分 //写真ファイルのアップロード処理 if(strlen($gra1) > 0 ) { //アップロードされたテンポラリファイルの情報を取得します $fileinfo = pathinfo($gra1); //debug($fileinfo); $fileext = strtoupper($fileinfo[extension]); if ($gra1_size > $MAX_FILESIZE || $gra1_size == 0) { //アップロードファイルのサイズ上限をチェックします $error=1; $error_mes .= "画像1のサイズが大きすぎます。".$FILESIZE_COM."以下にしてください。<br />"; }elseif ($fileext != "JPG" && $fileext != "GIF") { //アップロードファイルの拡張子をチェックします $error=1; $error_mes .= "JPG、GIF形式以外の写真ファイルは登録できません。<br />"; }else { $mictime = microtime(); if($fileext=="JPG"){$imagefile1 = substr($mictime, 11) . substr($mictime, 2, 6) . ".jpg";}else if($fileext=="GIF"){$imagefile1 = substr($mictime, 11) . substr($mictime, 2, 6) . ".gif";} //テンポラリファイルを一時フォルダに名前を変えて移動します if (move_uploaded_file($_FILES['gra1']['tmp_name'], "$H_PHOTOTMP$imagefile1")) { //画像縮小処理 $sfn1="$H_PHOTOTMP$imagefile1"; //読み込みファイル名 $dfn1="$H_PHOTOTMP$imagefile1"; //書き出しファイル名 list($lw1,$lh1,$type1,$attr1) = getimagesize($sfn1); //画像情報取得 if($type1==2){ //JPGならば処理 $sw1=$lw1*0.1; //サイズは縦横10%に $sh1=$lh1*0.1; $im_in1 = @imagecreatefromjpeg($sfn1); //元画像の読み込み $im_out1 = @imagecreatetruecolor($sw1,$sh1); //縮小画像の作成 imagecopyresampled($im_out1,$im_in1,0,0,0,0,$sw1,$sh1,$lw1,$lh1); //縮小コピー imagejpeg($im_out1,$dfn1); //ディスクに出力 //debug($dfn); }else if($type1==1){ //GIFならば処理 $sw1=$lw*0.1;//$lw1*0.1; //サイズは縦横10%に $sh1=$lw*0.1;//$lh1*0.1; $im_in1 = @imagecreatefromgif($sfn1); //元画像の読み込み $im_out1 = @imagecreatetruecolor($sw1,$sh1); //縮小画像の作成 imagecopyresampled($im_out1,$im_in1,0,0,0,0,$sw1,$sh1,$lw1,$lh1); //縮小コピー imagegif($im_out1,$dfn1); //ディスクに出力 //debug($dfn); } //画像縮小処理ここまで }else{ $error=1; $error_mes .= "写真ファイル1のアップロードに失敗しました。<br />"; } } } になります。 ご教授のほど宜しくお願い致します。

    • 締切済み
    • PHP
  • phpにてファイルをアップロード2

    先日質問させていただいたものなんですが、本やサイトを参考にして、以前とは違ったphpを使用してファイルをアップロードしようと考えています。 <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <title><?php echo basename($PHP_SELF);?></title> </head> <body> <p>ファイルアップロード</p> <form method="POST" action="gazou_upload.php" enctype="multipart/form-data"> <input type="file" name="uploadfile"> <input type="submit" value="送信"> </form> <?php if(isset($uploadfile)) { // アップロードされたファイルのサイズを確認 if($uploadfile_size <= 2097152) { // 移動 $moveto = "/public_html/img" . basename($uploadfile_name); move_uploaded_file($uploadfile, $moveto) or die("アップロード失敗\n"); print "<p>ファイルをアップロードしました。 - $moveto</p>"; } } ?> </body> </html> 上記を使おうと思っているのですが、これを使用した場合、 (1)上記をhtmlとしておくだけで、ファイルのアップが可能になるのか?phpも必要ですよね? (2)この場合アップされたファイルはドコに保存されるのか?…僕はpublic_htmlの中のimgというフォルダに移動して欲しいのですが。 皆様お手数ですが、教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでファイルのアップロード

    OSはLinuxのfedoraを利用しており、WebサーバーソフトはApacheを利用しています。 PHPを使って、クライアントからサーバーにファイルのアップロードをしたいのですが、プログラミングがあまり理解できておらず、アップロードができません。ちなみにphp.iniファイルの設定に関しては、アップロードは受け付けるようにしていますし、設定にミスはないと思います。 sample.phpというファイル名で下記のファイルを作ってみたのですが、アップロードすることができませんでした。まだPHPは初心者で間違いだらけだと思うのですが、こうすればアップロードできるようになるといった指摘をお願い致します。 <html> <head> <title> </title> </head> <body> <form enctype="multipart/form-data" action="sample.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 if(isset($uploadfile) and is_uploaded_file($uploadfile)) { if(move_uploaded_file($uploadfile, $path . "/var/www/html/test/" . $uploadfile_name)){ print("<br>Uploaded file saved."); }else{ print("<br>Uploaded file save failed."); } } ?> </body> </html>

    • ベストアンサー
    • PHP
  • ファイルのアップロードが、どうしても どうしても 出来ません・・

    ■アップロードフォーム用のHTMLファイルです↓ ファイル名=gazou_upload.html <html> <head> <title>ファイルのアップロード</title> </head> <body> <form method="POST" action="gazou_upload.php" enctype="multipart/form-data"> <input type="hidden" name="max_file_size" value="1000000" > <input type="file" name="userfile"><br><br> <input type="submit" value="アップロード"> </body> </html> ■受け取ったファイルをサーバ上のディレクトリに移動するPHPファイルです↓ ファイル名=gazou_upload.php <?php // アップロード先ディレクトリ+ファイル名の指定 $uploaddir = '/image/'; $uploadfile = $uploaddir. $_FILES['userfile']['name']; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { print "ファイルアップロード成功"; print_r($_FILES); } else { print "ファイルアップロード失敗"."<br>"; print_r($_FILES); } ?> ■結果 Warning: move_uploaded_file(/image/P1010851.jpg): failed to open stream: No such file or directory in /home/sites/lolipop.jp/users/**********/web/gazou_upload.php on line 8 Warning: move_uploaded_file(): Unable to move '/tmp/phpuqa8g2' to '/image/P1010851.jpg' in /home/sites/lolipop.jp/users/***********/web/gazou_upload.php on line 8 ファイルアップロード失敗 Array ( [userfile] => Array ( [name] => P1010851.jpg [type] => image/pjpeg [tmp_name] => /tmp/phpuqa8g2 [error] => 0 [size] => 84509 ) ) 簡単なプログラムなのにちゃんと動作してくれません。色々試行錯誤試したりしているのですが・・初心者で本当に困ってます。どなたかアドバイスよろしくお願いします。

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

    phpのmove_uploaded_fileを使用してアップロードをしようと思うのですがアップロードが出来ません。 状況は ローカル環境のwindowsでのアップロードは行えるがlinuxでは失敗してしまいます。 move_uploaded_fileからはエラーは出力されていません そもそもmove_uploaded_fileが成功しているのになんでアップロードされていないのか分かりません。 //■HTML <form name="form1" method="post" action="upload.php" ENCTYPE="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="10485760" /> <table class="frm" id="tbl"> <tr><th>ファイル1<div id="image"></div></th> <td> 画像<input id="img_1" type="file" name="image[]" class="fname" onChange=imageChange(this); /><br /> </td></tr> <tr> <th>ファイル2<div id="image"></div></th> <td> 画像<input id="img_2" type="file" name="image[]" class="fname" onChange=imageChange(this); /><br /> </td> </tr> </table> </form> //■phpで以下のコードを実行すると oreach ($_FILES["image"]["error"] as $key => $error) { //複数のファイルをアプロード if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["image"]["tmp_name"][$key]; //テンポラリファイルパス $name = $_FILES["image"]["name"][$key]; //アップロードファイル名 $size = $_FILES["image"]["size"][$key]; //アップロードファイルサイズ $ermsg = $_FILES['image']['error'][$key]; //エラーメッセージ echo "アップロードファイル名".$name."\n" ; echo "アップロードファイルsize" .$size ."\n" ; echo "errmsg= .$ermsg."\n" ; // ファイルアップロード $cnt++; if ( move_uploaded_file($tmp_name, "../1/33/.$cnt."2upload.jpg ")){ //ファイルアップロード echo "アップロード成功 .$ermsg."\n" ; echo "  テンポラリファイル="$tmp_name."\n"; echo "  アップロードファイル="$dir_img."/".$cnt.UPLOAD_FILE_NAME."\n"; } else { echo 1; error_log("upload error! \n", 3, MATCHING_ERROR_LOG); exit; } } } exit; ■結果 アップロードファイル名thum6.jpg アップロードファイルsize=10104 errmsg= 0 アップロード成功   テンポラリファイル=/tmp/phpMvCzgo   アップロードファイル=../1/33/1upload.jpg アップロードファイル名 thum3.jpg アップロードファイルsize=11528 errmsg= 0 アップロード成功   テンポラリファイル=/tmp/php5Q4kIL   アップロードファイル=../1/33/2upload.jpg テンポラリの/tmpは777のため権限に問題ないです php.iniの設定 upload_max_filesize=2m post_max_size=8m memory_limit=128m 今回のアップロードファイルのサイズから問題なし file_uploads=onなので問題ありませんでした これでなにかわかる方いらっしゃいましたら教えてください。

    • ベストアンサー
    • PHP
  • ファイルアップロードが出来ません。

    phpとApacheを利用して、ファイルのアップロードしたいのですが以下のようなエラーが出て上手くいきません。 エラー文 Warning: move_uploaded_file(C:\Program File\Apache Group\Apache2\htdocs\image\200708090925000.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\view.php on line 12 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\Temp\php11.tmp' to 'C:\Program File\Apache Group\Apache2\htdocs\image\200708090925000.jpg' in C:\Program Files\Apache Group\Apache2\htdocs\view.php on line 12 正常にアップロード処理されませんでした。 php.iniの設定はfile_upload=On upload_tmp_dir=NULL upload_max_size=2M です。 phpinfo()で確認したところ、upload_tmp_dirがno valueになっているのですが、設定が反映されていないのでしょうか? 参考までに作成したプログラムを載せておきます。 <HTML> <HEAD> <TITLE>PHPのテキスト</TITLE> </HEAD> <BODY> <?php $file_dir = 'C:\Program File\Apache Group\Apache2\htdocs\image\\'; $file_path = $file_dir.$_FILES["uploadfile"]["name"]; if(move_uploaded_file($_FILES["uploadfile"]["tmp_name"], $file_path)){ $img_dir ="/image/"; $img_path = $img_dir.$_FILES["uploadfile"]["name"]; $size = getimagesize($file_path); ?> ファイルアップロードを完了しました。<BR> <IMG src="<?=$img_path?>"<?=$size[3]?>><BR> <B><?=mb_convert_encoding($_POST["comment"], "EUC-JP","SJIS")?></B><BR> <?php }else{ ?> 正常にアップロード処理されませんでした。<BR> <?php } ?> </BODY> </HTML> 原因が分かる方、ご意見よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHP MySqlでの複数画像アップロード

    ご質問させていただきます。 複数画像をアップロードするには以下のようなかたちになると思いますが、 画像ファイルを保存するところまでは出来たのですが、同時に画像ファイル名をDBに登録出来ればと考えています。 以下の場合、nameが同一になるので3つのカラム(img1,img2,img3)にそれぞれ登録するにはどのようにすればいいでしょうか? <input type="file" name="uploadfile[]" /> <input type="file" name="uploadfile[]" /> <input type="file" name="uploadfile[]" />

    • ベストアンサー
    • MySQL
  • ファイルのアップロードの方法をお教えください

    初心者で困っております。何卒よろしくお願いいたします。 次のHTMLで画像をアップし、受け側のPHPで保存しようとしていますが、どうしてもエラーになってしまいます。 何もわかりませんもので、解決の方法を教えていただければ幸いです。 ファイルの送り側のHTMLファイル <html> <form action="upload_save_test1.php" method="POST" enctype="multipart/form-data"> <input type="file" name="uploadfile" size="60"> <input type="submit" name ="reg" value="登録"> </form> </html> 受け側のupload_save_test1.php <?php if(!move_uploaded_file($uploadfile,"tem.jpg")){ print "保存に失敗しました"; } ?> 何か根本的な問題なのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう