• ベストアンサー

ファイルアップロード aviファイルがUPできない!!

質問させて下さい。 現在、会員制写真サイトを管理しております。 PHPにてファイルアップロードシステムを組み、UPできるファイル形式やサイズを制限しております。 抜粋ロジックは下記のようになります。 $mime_type = $_FILES['form_file']['type']; switch( $mime_type ) { case "image/gif": case "image/pjpeg": case "image/x-png": move_uploaded_file( $_FILES['form_file']['tmp_name'], $targetDIR.$_FILES['form_file']['name'] ); ~中略~ break; case "video/x-ms-asf": case "video/x-ms-wmv": case "video/x-msvideo": case "video/quicktime": case "video/mpeg": case "audio/x-pn-realaudio": case "application/x-shockwave-flash": move_uploaded_file( $_FILES['form_file']['tmp_name'], $targetDIR.$_FILES['form_file']['name'] ); ~中略~ break; default: メッセージ出力(うぷ出来ません。); break; } ※静止画と動画によってログファイルへの記録方法を分けています。 aviファイルのMIMEタイプは "video/x-msvideo" であると判断したのですが、複数のaviファイルでテストした結果、うぷ出来ませんとなってしまいました…。 テストしたファイルは、Divxエンコのものと、Windows内にあった、clock.avi というファイルです。 どのようにしたら aviファイルをうぷすることが出来るでしょうか? そもそも、MIMEタイプの指定が間違っているのでしょうか? ご教授頂けたら幸いです。

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

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

試しにclock.aviをアップしてみたのですが、 [type] => video/avi となっていました。 正常にアップできましたよ。

Javac
質問者

お礼

ご回答ありがとうございます。 ちょっと自分の推測力が足らなかったようです…。 ここで質問するほどのものでもなかったですね。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • tomy06
  • ベストアンサー率25% (58/224)
回答No.3

php.iniのアップロードのmaxsizeが小さいという落ちはないですよね php.ini内のupload_max_filesizeを調べてみてください

全文を見る
すると、全ての回答が全文表示されます。
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

Perlだけど、どっかから拾ってきたものです。 参考になれば。 if ($tail =~ /image\/gif/i && $gif) { $tail=".gif"; $flag=1; } if ($tail =~ /image\/jpeg/i && $jpeg) { $tail=".jpg"; $flag=1; } if ($tail =~ /image\/x-png/i && $png) { $tail=".png"; $flag=1; } if ($tail =~ /text\/plain/i && $text) { $tail=".txt"; $flag=1; } if ($tail =~ /lha/i && $lha) { $tail=".lzh"; $flag=1; } if ($tail =~ /zip/i && $zip) { $tail=".zip"; $flag=1; } if ($tail =~ /pdf/i && $pdf) { $tail=".pdf"; $flag=1; } if ($tail =~ /audio\/.*mid/i && $midi) { $tail=".mid"; $flag=1; } if ($tail =~ /msword/i && $word) { $tail=".doc"; $flag=1; } if ($tail =~ /ms-excel/i && $excel) { $tail=".xls"; $flag=1; } if ($tail =~ /ms-powerpoint/i && $ppt) { $tail=".ppt"; $flag=1; } if ($tail =~ /audio\/.*realaudio/i && $ram) { $tail=".ram"; $flag=1; } if ($tail =~ /application\/.*realmedia/i && $rm) { $tail=".rm"; $flag=1; } if ($tail =~ /video\/.*mpeg/i && $mpeg) { $tail=".mpg"; $flag=1; } if ($tail =~ /audio\/.*mpeg/i && $mp3) { $tail=".mp3"; $flag=1; } if ($tail =~ /audio\/.*wav/i && $wav) { $tail=".wav"; $flag=1; } if ($tail =~ /video\/.*msvideo/i && $avi) { $tail=".avi"; $flag=1; } if ($tail =~ /video\/.*wmv/i && $wmv) { $tail=".wmv"; $flag=1; }

Javac
質問者

お礼

ご回答ありがとうございます。 今後、アップロードファイルの幅を増やす際に参考にさせて頂きます。 PS:application/realmedia で RMファイルがうぷできるかと思いやってみましたが、駄目でした…。 video/realmedia も然り。ま、RM使うユーザは殆どいないのでまだ問題ないですが。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

    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でファイルアップロードがうまくいきません

    PHP初心者なんで宜しくお願い致します。 ファイルアップロードのシステムを作っているんですが どうもうまくいきません。 <form action="<? $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> 写真:<input type="file" name="file" size="40" /> <input type="submit" name="new_write" value=" 登録 "> </form> <? if(isset($_POST['new_write'])){ $filename = $_FILES['file']['name']; $updir = "./image/".$filename; if(move_uploaded_file($_FILES['file']['tmp_name'], $updir)){ print "OK"; }else{ print "NG"; } } ?> 上記の記述をしています。 そしてphpinfo()で情報を確認しても file_uploadsはONになっています。 そしてPHPのバージョンは4.4.2です。 単純なことかもしれませんが、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ファイルのアップロードが出来ない

    送信フォームを使って画像をアップロードさせたいのですが、うまくいきません。ブラウザ上でエラー表示は出ないのですが、移動させたいディレクトリにファイルが入って来ない状況です。 初心者なので、参考書を片手に例文をカスタマイズしていったので、アルゴリズム自体がどこか間違っているかもしれないです。 特に下記ソースコード中の 『$path = getcwd();~』 の辺りで、スクリプトのあるディレクトリパスを取得して、パスの末尾に"¥"or"/"を追加しているのは理解出来るのですが、 そもそも何のスクリプトのパスを取得しているのかが解らず、 結局テンポラリディレクトリからの移動先ディレクトリを自分で$new_dirと定義してmove_uploaded_file()しています。 どなたか詳しい方いらっしゃいましたらご教示宜しくお願いします! ===========ソースコード=============== <?php if (isset($_POST["submit"])) { //------------------------------------------------------------------------- //■クライアントから取得する元ファイル名を$pic_name、 //■テンポラリディレクトリ名を$pic_tmp //■テンポラリディレクトリからの移動先ディレクトリを$new_dir //------------------------------------------------------------------------- $pic_name = $_FILES["pic"]["name"]; $pic_tmp = $_FILES["pic"]["tmp_name"]; $new_dir = "http://xxx.com/pic/"; //---------------------------------------------------------------------------------- //■エラーメッセージは配列に追加 //---------------------------------------------------------------------------------- $error_message = array(); $path = getcwd(); if (isset($_ENV["OS"]) && preg_match("/window/i", $_ENV["OS"])) { $path .= "\\"; } else { $path .= "/"; } if (strlen($pic_name)>0 && strlen($pic_tmp)>0) { //---------------------------------------------------------------------------------- //■テンポラリディレクトリにファイルがアップされているかチェック //---------------------------------------------------------------------------------- if (is_uploaded_file($pic_tmp)) { //---------------------------------------------------------------------------------- //■ファイルを移動 //---------------------------------------------------------------------------------- if (!move_uploaded_file($pic_tmp, $new_dir .basename($pic_name))) { $error_message[] = "●自画像ファイルのアップロードに失敗しました"; } } } } ?> <html> <form method="post" action="<?=$SERVER["PHP_SELF"]?>" enctype="multipart/form-data" > 画像のアップロードフォーム <input type="hidden" name="MAX_FILE_SIZE" value="100000"> <input type="file" name="pic" size="40"> </html>

    • ベストアンサー
    • 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
  • ファイルアップローダーで送信するファイルを保存する際にファイル名に自動でURLパラメーターを入れ込む方法を教えてください。

    phpの超初心者です。 phpでファイルをブラウザ上でアップロードするシステム でかつ、 アップロード用のURLにhttp://www.hogehoge.com/up.php?no=1234などのパラメーターを付けてアップロードするファイルを「1234.jpg」という名前で保存するものが必要になり色々調べました。 以下の方法だとアップロードしたファイル名が「.jpg」になってしまいます。 $count_fileに単純な文字列、'image'などを入れるとちゃんと「image.jpg」としてアップロードできます。 <form action="<?= $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data"> <p><input type="file" name="data" /> <input type="submit" value="アップロード"></p> </form> <?php $updir = "./data"; $tmp_file = @$_FILES['data']['tmp_name']; $count_file = $_GET['no']; @list($file_name,$file_type) = explode(".",@$_FILES['data']['name']); $copy_file = $count_file . "." . $file_type; move_uploaded_file($tmp_file,"$updir/$copy_file"); ?> パラメーターなどの環境変数をファイル名に入れ込むにはどうしたらよいのでしょうか?調べ方が悪いのか、検索しまくってもわからなくて困っています。 どなたかご教授いただけませんでしょうか?

    • ベストアンサー
    • 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
  • PHP ファイルupロードのセキュリティ

    ただいま ファイルUPロードするための簡単なPHPプログラムをせいさくしています 。 セキュリティの部分とか足らないところがるとは思うのですが、 下のプログラjムをどうやって改造すればいいのでしょうか? たとえば 容量を制限する。 ファイル種類を限定する等  おしえて頂きたいと思っています。 よろしくお願いたします。 <body> <p><?php 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"], 0644); echo $_FILES["upfile"]["name"] . "をアップロードしました。"; } else { echo "ファイルをアップロードできません。"; } } else { echo "ファイルが選択されていません。"; } ?></p> </body> </html>

    • 締切済み
    • PHP
  • ファイルアップロードを教えて下さい。

    お世話になります。 php初心者です。 初歩的な質問になると思いますが… ローカルでファイルのアップロードのスクリプトの練習をしてるのですが上手く行きません。 アップロードしたファイル名が全て同じになります。 ディレクトリ構成として htdocs  ├128.php  └phpbook(ディレクトリ)    └128-2.php ■128.phpの中身 <form action="./phpbook/128-2.php" enctype="MULTIPART/FORM-DATA" method="POST"> ファイル:<input type="FILE" name="upfile"> <input type="submit" value="アップロード"> </form> ■128-2.phpの中身 <?php if(move_uploaded_file($_FILES['upfile']['tmp_name'], "./htdocs/phpbook/") ==FALSE){ print "失敗しました。"; }else{ print ($_FILES['upfile']['name']); print "をアップロードしました。"; } ?> アップロードは出来てるのですが、phpbookディレクト内にphpbookという拡張子が何もついてないファイルがアップロードされてしまいます。 よろしくお願いします。

    • ベストアンサー
    • 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
  • 違いがわかりませんorz

    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <title>アップロードされたか調べる</title> </head> <body> <p><?php if(isset($_FILES['example'])){ $localFilename=$_FILES['example']['name']; $uploadFile=$_FILES['example']['tmp_name']; if(is_uploaded_file($uploadFile)){ if (move_uploaded_file($_FILES["example"]["tmp_name"], "files/" . $_FILES["example"]["name"])) { chmod("files/" . $_FILES["example"]["name"], 0644); echo '<p>アップロードされたファイルです:'.h($localFilename).'</p>'; }else{ echo '<p>アップロードされていないファイルです:'.h($localFilename).'</p>'; } } function h($string){ return htmlspecialchars($string, ENT_QUOTES); } ?></p> <form method="post" action="" enctype="multipart/form-data"> <p>ファイルをしていしてください</p> <input type="file" name="example" value"" /> <input type="submit" value="送信する" /> </form> </body> </html> ----------------------------------------------------------------------------- ------------------------------------------------------------------------------ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <title>sample</title> </head> <body> <p><?php 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"], 0644); echo $_FILES["upfile"]["name"] . "をアップロードしました。"; } else { echo "ファイルをアップロードできません。"; } } else { echo "ファイルが選択されていません。"; } ?></p> <form method="post" action="" enctype="multipart/form-data"> <p>ファイルをしていしてください</p> <input type="file" name="upfile" value"" /> <input type="submit" value="送信する" /> </form> </body> </html> -------------------------------------------------------------------------- ------------------------------------------------------------------------------- 上と下のプログラムの違いがわかりません。アップロードのプログラムなんですが下の方が成功し、上がエラーになります。よければ、解説つけて上のプログラムを正してください(><) お願いします。

    • ベストアンサー
    • PHP