[PHP-users 23563] アップロードされたファイル名の取得
Kuma
satoru_kumagai @ mjs.co.jp
2004年 11月 8日 (月) 14:58:52 JST
ファイルのアップロードについてご教授ください.
今回初めてファイルのアップロード処理を行っています.
環境
OS -> Win2000SV
Server -> Apache1.3.26
PHP -> 4.2.2
php.ini
[mbstring]
mbstring.internal_encoding = EUC-JP
;mbstring.http_input = auto
mbstring.http_output = SJIS
;mbstring.detect_order = auto
;mbstring.substitute_character = none;
サンプルソース
<?php
if(!empty($_FILES['upfile']['name'])){
echo "tmp_name = " . $_FILES['upfile']['tmp_name'] . "<br>";
echo "name = " . $_FILES['upfile']['name'] . "<br>";
echo "size = " . $_FILES['upfile']['size'] . "<br>";
echo "type = " . $_FILES['upfile']['type'] . "<br>";
}else{
?>
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE></TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF">
<form enctype="multipart/form-data"
action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="2048000">
ファイル<input type="file" name="upfile" size="30">
<input type="submit" value="アップロード">
</form>
</BODY>
</HTML>
<?php
}
?>
上記の環境でテストしているのですが,$_FILES['upfile']['name'] で
クライアント元のファイル名を取得すると,拡張子だけが表示され,
ファイル名の部分が取得できません.
ファイル名に日本語が含まれていない場合には,問題なく全ての
情報が取得できているのですが,日本語を含んだ場合,文字化する
以前に,ファイル名そのものが取得できません.
mb_detect_encoding($_FILES['upfile']['name'] , "auto")を実行すると
ASCIIが返ってきます.
Googleで散々調べましたが,日本語が含まれていたら,その時点で
処理を中止する,またはエラーを表示する.という記事は見かけました.
日本語は無理なのでしょか?
mb_convert_encodingで,いろいろ試してもダメでした.
ご教授お願いします.
PHP-users メーリングリストの案内