• 締切済み

ファイルのアップロードについて

elbendの回答

  • elbend
  • ベストアンサー率50% (7/14)
回答No.1

if ($_FILES['file']['size'] == 0) {  if (!file_exists( "$tempdir/$tmpfilename" )) {   //ファイルを受け取ってないし、一時ファイルもないのでエラー } } ではだめですか? エラーの時に、一時保存したファイル名を保持しておく必要が ありますが。

関連するQ&A

  • ファイルのアップロードについて

    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
  • ファイルのアップロードがどうしても出来ません。

    単に画像ファイルをアップロードさせるだけなのですが、何故か出来ません。プログラミングに関しては初心者ですので、どなたかアドバイスをよろしくお願いします。 ■アップロードフォーム用の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 if (move_uploaded_file($_FILES['userfile']['tmp_name'], "/image/")) { print "ファイルアップロード成功"; print_r($_FILES); } else { print "ファイルアップロード失敗"."<br>"; print_r($_FILES); } ?> ■ファイルを保存するディレクトリ 上のファイルと同じ階層で フォルダ名が image パーミッションは3つとも 707 にしました。 パーミッションが拒否されたというメッセージだと思うので、パーミッションを変更したのですがダメでした・・ちなみにサーバはロリポップを使っていて、777と666はエラーになると注意書きがあったので、707にしました。かなりハマっていて困っています。回答もしくはアドバイスをどなたかよろしくお願いします。

    • ベストアンサー
    • PHP
  • 同じファイル内で、アップロードとアップロードされたファイルの処理をすることについて

    OS:Window XP Pro 開発環境:Xampp(Apache + PHP + Mysql) 現在ファイルをアップロードする処理を書いているのですが、 この処理を 1)a.phpでファイルをアップロードする処理 2)b.phpでアップロードされたファイルの処理 と分けて、コーディングするのではなく 1)a.php内にファイルをアップロードする処理とアップロードされたファイルの処理を一緒に記述する という風にできないかと思いましたので、 以下のようなコードを書いたのですが $_FILES['upload_file']['tmp_name']) の値を調べてみたところ、なんの値も 入っていなかったことから このコードでは、二つの処理を一つのファイル内に書くことが でいないようでした。 どうにかしてひとつのファイル内に この二つの処理を同居させることはできないのでしょうか? a.php --------------------------------------- switch($action) { case "update": if(is_uploaded_file($_FILES['upload_file']['tmp_name'])) { $upload_file = $_FILES['upload_file']['tmp_name']); if(file_exists(dirname(__FILE__)."/profile_phote/") == TRUE) { $phote_name = dirname(__FILE__)."/profile_phote/".$upload_file; } else { mkdir(dirname(__FILE__)."/profile_phote/"); $phote_name = dirname(__FILE__)."/profile_phote/".$upload_file; } move_uploaded_file($_FILES['upload_file']['tmp_name'],$phote_name); "リダイレクト処理・・・" case ... case ... default: <form name="profile" action="" method="post"> <input type="file" name="upfile"> <input type="hidden" name="action" value="update"> </form> }

    • ベストアンサー
    • 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
  • 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
  • アップロードしたファイル名をランダムに書き換え

    <?php move_uploaded_file($_FILES["upload_file"]["tmp_name"], "../mov/" . $_FILES["upload_file"]["name"]); echo 'document.getElementById("mov").value="',$_FILES["upload_file"]["name"],'"'; ?> 以上のようなアップロードされたファイルをmovフォルダに移動し、さらにそのファイル名をエコーするPHPがあるのですが、 途中でファイル名をランダムな「数字10桁.拡張子」に変換してmovフォルダに移動し、そのファイル名を上記の様な形に沿ってエコーしたいのですが、どのようにすればよろしいでしょうか。

    • ベストアンサー
    • PHP
  • ファイルのアップロード 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
  • ファイルのアップロードが、どうしても どうしても 出来ません・・

    ■アップロードフォーム用の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
  • ファイルがアップロードできません。。。

    以下のコードでファイルをアップロードしようと思っているのですが、$_FILESに一次格納できていないようでエラーと表示されてしまいます。 コードは抜粋です。 【○○.php】 <form action="△△.php?id=<?php print( $_REQUEST["id"] ); ?>" method="post" enctype="multipart/form-data"> <input type="file" name="upimage" > </form> 【△△.php】 <?php if ( empty ( $_FILES['upimage'] ) ){ print ( "エラー" ); exit; } ?> ⇒実行するとエラーと表示されてしまいます。 補足事項は以下の通りです。 ・$_REQUEST["id"]にはデータベースから取得した番号が入っていて、情報を引き継げるようにしています。 ・サーバーはお名前.comの共有SD(レンタルサーバー)を使っています。 ・アップロードしようとしているファイルはjpg、サイズは100Kほどです。 ・php.iniの情報  file_uploads = on  upload_tmp_dir = no value max_file_uploads = 20 upload_max_filesize = 2M お分かりになる方いらっしゃいましたら、ご教示ください。。。 よろしくお願いいたします。

    • 締切済み
    • 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