$_FILESのnameについて

このQ&Aのポイント
  • HTMLファイルでの日本語ファイルの読み込みに関する問題
  • 文字化けしてしまったファイル名の解決方法
  • HTMLファイルのエンコード設定に注意
回答を見る
  • ベストアンサー

$_Filesのnameについて

環境:Windows2008R2 + PHP5.4 次のようなHTMLより日本語ファイル(い.pdf)を読み込みPHPの$_FILES変数で確認をすると 文字化けしていたので、バイナリエディタで確認すると「c3a3c281c284.pdf」となっていました。 これを「い.pdf」へ戻すにはどうすれば良いでしょうか? HTMLファイルのエンコードは、「UTF-8」です。 よろしくお願いします。 htmlファイル <form id="aupload" action="upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="aupname" multiple="multiple"/> </form>

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

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

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

「PHP アップロードファイル文字化け」 http://wghost.org/it/2009/07/mb_convert_encoding.html こちらでは「auto」で書かれていますがこれはphp.iniに依存するので使用すべきではありません。Windowsであればエンコーディングは「cp932」または「SJIS-win」と指定しますが、アップロード元がWindowsだとは限らないので $filename = mb_convert_encoding($filename, 'UTF-8', 'ASCII,JIS,UTF-8,CP51932,SJIS-win'); としてください。 参考 http://doremi.s206.xrea.com/php/tips/mbconv.html

w0a15455
質問者

お礼

教えて頂いたページをダウンロードし実行してみましたが、結果は変わりませんでした。 文字は化けたままです。 ページのエンコードがいけないのかと思い、UTF-8→SJISにしてみましたが、 文字コードが「C282C2A2」.pdfとなっただけで、い.pdfとは 取得できませんでした。 php.iniの問題でしょうか? phpのバージョンは、5.4.21です。

関連するQ&A

  • ファイル選択と同時にアップロード HTML+JS

    HTMLとJava Scriptのことを質問させてください <form>タグからファイルを選択すると同時をアップロードしたいと思っています。 複数の「ファイルを選択ボタン」を設置し、それぞれ"001.jpg"、"002.jpg"など指定の名前でアップロードしたいです。 下記のようにいくつかの<form>タグを設置し、javascriptでコントロールできるかと思いケース1のように書いた場合はうまくいったのですが、ケース2のように複数並べて記述した場合、動かなくなり困っております。 どなたか教えていただけないでしょうか? よろしくお願いいたします ケース1) <form id="upload_file1" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="001.jpg" />    <input type="file" id="file_id_1" name="file_name" accept="image/jpeg"> </form> <form id="upload_file2" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="002.jpg" />    <input type="file" id="file_id_2" name="file_name" accept="image/jpeg"> </form> <script> var form = document.getElementById("upload_file1"); var input = form.file_name; input.onchange = function (){ if(this.value){ form.submit(); } }; </script> ケース2) <form id="upload_file1" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="001.jpg" />    <input type="file" id="file_id_1" name="file_name" accept="image/jpeg"> </form> <form id="upload_file2" action="file_upload.php" method="post" enctype="multipart/form-data" target="upload_frame">    <input type="hidden" name="picture_id" value="002.jpg" />    <input type="file" id="file_id_2" name="file_name" accept="image/jpeg"> </form> <script> var form = document.getElementById("upload_file1"); var input = form.file_name; input.onchange = function (){ if(this.value){ form.submit(); } }; var form = document.getElementById("upload_file2"); var input = form.file_name; input.onchange = function (){ if(this.value){ form.submit(); } }; </script>

  • ファイルのアップロード (PHP, $_FILES)

    以下の内容で困っております、ご教授いただけますと幸いです。 ファイルのアップロードで、以下のようなPHPページを作成し 実際ファイルのアップロードを実行した場合、 IEやMozillaではうまくいくのですが、Operaでうまくいきません。。 $_FILES配列に何も入っていない状態です。 なにかブラウザ側の設定が原因なのでしょうか? ちなみにテストしているファイルのサイズは10KB以下でphp.iniでの "upload_max_size"の設定値は2MBです。 --簡易ソースコード-- <HTML> <BODY> <FORM ENCTYPE="MULTIPART/FORM-DATA" NAME="up" ACTION="./" METHOD="POST"> <INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="10000000"> <INPUT TYPE="FILE" NAME="userfiles" SIZE="50"> <INPUT TYPE="SUBMIT" VALUE="GO!"> <?PHP print_r ($_FILES); ?> </FORM> </HTML>

    • ベストアンサー
    • PHP
  • onclickイベントで、PHPの関数をコール

    下記のようなPHPスクリプトで、ボタンが押された時の、onclickイベントで<?php upload_file() ?>として PHPのupload_file() 関数をコールしてるのですが、画像ファイルがアップできません。 どこが間違いなのか、教えていただけますか。 --------------------------------------------------------------------------------- <form name="form2" method="POST" enctype="multipart/form-data" action="bbs.php"> <!-- ファイル参照フォームを表示する --> <input type="hidden" name="MAX_FILE_SIZE" value="30000"> <input type="file" name="upfile" tabindex="6"> <input type="button" value="画像を送信" tabindex="7" onclick="<?php upload_file() ?>"> </form>

    • 締切済み
    • PHP
  • ファイルのアップロードの方法をお教えください

    初心者で困っております。何卒よろしくお願いいたします。 次の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
  • cgi.pm を使用してファイルUP時にtextエリア等の情報もcgiに引き渡す

    何度もPerlのところで質問していますが・・・今回は ファイルのアップロードをするときに少々もんだいが出てきてしまうことについてです。<input type="file"... を使います 以下の二つのファイルで構成しています(一部分だけ) ---form.html--- <form action="upload.cgi" method="POST" ENCTYPE="multipart/form-data"> <textarea name="input_textarea" rows="20" cols="70"></textarea> <input type="file" name="File" size=32> <input type-"submit" value="ok"> ---upload.cgi--- [formからの情報を配列変数に代入するスクリプト・・・] use CGI; $query = new CGI; $filename = $query->param('File'); # ファイル名の取得 $type = $query->uploadInfo($filename)->{'Content-Type'}; 同じファイル名が無いことを確認して、保存 という処理を行っています。upload.cgiの中身がとぼしくて申し訳ありません。 かなり省略してます。 さて、、問題となるのは ENCTYPE="multipart/form-data" とすると 配列変数にFORMからの情報がうまく入ってくれないということです、 かといってENCTYPE="multipart/form-data"を外すと CGI.pm を使った ファイルのアップロードができなくなってしまいます。 ENCTYPE="multipart/form-data" のオプションをつけて 配列変数にテキストエリアの内容を入れるにはどうすればいいのでしょうか。 テキストエリアを取り除くとファイルのアップロードはできます。 ただ、ファイルと入力したテキストを同時に処理することができないんです。

  • $_FILES関数

    $_FILES関数が使えなくて困っています。 phpのバージョンは4.4です。 ソースは以下のようなものです。 ================================= <?php print_r($_FILES); ?> <html> <body> <form action="<?= $_SERVER['PHP_SELF']?>" method="POST" enctype="multipart/form-data"> <input type="file" name="upfile"/> <input type="submit" value="アップロード"/> </form> <body> <html> ================================= "アップロード"ボタンを押すと、Array()とだけ表示されます。 どうしたら、$_FILES情報が取れるのか分かる方、アドバイスお願いします。

    • 締切済み
    • PHP
  • formの入れ子の回避方法

    アドバイス下さい。 <form method="post" name="addForm" id="addForm" action="aaa.php"> <input type="text" name="textA" id="textA"> <form method="post" name="uploadFormA" id="uploadFormA" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text1" id="text1"> <input type="file" name="upload_fileA" id="upload_fileA"> <input type="button" value="アップロード"> </form> <form method="post" name="uploadFormB" id="uploadFormB" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text2" id="text2"> <input type="file" name="upload_fileB" id="upload_fileB"> <input type="button" value="アップロード"> </form> <form method="post" name="uploadFormC" id="uploadFormC" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text3" id="text3"> <input type="file" name="upload_fileC" id="upload_fileC"> <input type="button" value="アップロード"> </form> <input type="text" name="textB" id="textB"> <input type="submit" value="送信"> </form> のような、formが入れ子になってしまっているformがあります。 これを回避する方法を教えていただきたいです。 条件としては、 ・見た目はこの順番がいい。 ・javascript、CSS等なんでも良いです。 ・各「アップロード」ボタンで、text1,2,3,4、upload_fileA,B,C,Dを送信、「送信」ボタンでtextA,Bを送信したい。 以上、お願いいたします。

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

    ドコモ端末でPHPのファイルアップロード機能を使えるようにしたいのですが、どのようにすればいいでしょうか? ちなみに、vodafoneならこの機能が使えます。 ドコモ端末で下のソースにアクセスすると、 ファイルを参照するボタンが見えず、ファイルをアップロードできません。 HTMLはキャリア毎に使えるタグがあるのは知っていますが、下のソースの場合はどのように変更すれば良いのでしょうか?ご教授下さい。宜しくお願いします。 #ソースはコレです。 <form method="post" action="upload_save.php" enctype="multipart/form-data"> <input type="hidden" name="max_file_size" value="1000000" /> <input type="file" name="upload_file" size="70"><br /> (上書き禁止) <input type="checkbox" name="forbidden" value="1" checked /> <input type="submit" value="アップロード" /> </form> #ファイル自体はphpですが、中身はほぼHTMLに関する質問になってしまい、申し訳ありません。

    • ベストアンサー
    • PHP
  • 添付ファイルの未選択チェック方法

    よろしくお願い致します。 添付ファイルを指定フォルダにアップするPHPがあります。 添付ファイルをアップすることを必須入力項目にしたいので、 このフォームを未選択の状態で送信ボタンを押したときにアラートを出したいと考えています。 この場合、どのようなコードを追加すればよいのでしょうか? フォーム部分のコードです。 <form action="upload.php" method="post" enctype="multipart/form-data"> <input name="fl[]" type="file" /> </form> どうぞ、よろしくお願い致します。

  • enctype="multipart/form-data"

    アップローダーのHTMLで、FORMのタグに enctype="multipart/form-data"が必要なのはバイナリファイルをアップロードする時だけですか?

    • ベストアンサー
    • HTML