[PHP-users 24757] ファイルアップロード時にファイル名が正しく扱えない問題へのレス

okkan ufo okkanufo @ yahoo.co.jp
2005年 3月 2日 (水) 14:14:53 JST


12594 ファイルアップロード時にファイル名が正しく扱えない
問題へのレス
$_FILES['userfile']['name'];で正しくソ表などの0x5c(\)を
含むファイル名が読めない

おっかんと申します。
過去のスッレド見ても解決しなかったので
投稿します。
環境
os:windows2000pro
webserver:iis
php:4.3.7
php.iniの設定
output_buffering = On
output_handler = mb_output_handler
magic_quotes_gpc = Off
default_charset = Shift_JIS
extension_dir = "c:/php/extensions/"
extension=php_mbstring.dll
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none

test.php
<form enctype="multipart/form-data"
action="upload_mgr2.php?dir=<?=urlencode(mb_convert_encoding($dir,"EUC-JP","SJIS-win"))?>"
method="POST">
<input type="hidden" name="MAX_FILE_SIZE"
value="10000000">
送信ファイル: <input name="userfile" type="file" >
<input type="submit" value="アップロード">
</form>

upload2.php
<?php

$filepath = $_GET["dir"];//File Path
$uploadfile =
$filepath."/".mb_convert_encoding($_FILES['userfile']['name'],"EUC-JP","SJIS-win");
$uploadfile
=mb_convert_encoding($uploadfile,"SJIS-win","EUC-JP");
if (move_uploaded_file($_FILES['userfile']['tmp_name'],
$uploadfile)) {
    print "ファイルアップロード成功\n";
} else {
    print "ファイルアップロード失敗。デバッグ関連情報:\n";
    print_r($_FILES);
}
?> 

というプログラムで
ソ表圭新規テキスト文書.txtを送信すると
新規テキスト文書.txtとなります。(ファイルアップロード成
功となります)
過去スレッドで
magic_quotes_gpc = Off
にすると解決すると書いてありましたが、on,offともに変化が
ありません。

アドバイスお願いします。



PHP-users メーリングリストの案内