[PHP-users 12570] HTTP POSTよりアップロードされたファイル名の取得

Idi(Takata) php-users@php.gr.jp
Thu, 16 Jan 2003 15:42:13 +0900


こんにちわ。いつもお世話になっています。
高田@広島と申します。

HTTP POSTによりアップロードされたファイルのオリジナル名
を取得し利用するプログラムを書いておりますが、下記の
とおりで困っています。過去ログを探しましたが、PHP4.2.3 で
話題になっていた日本語処理のバグの問題にも該当しないよ
うですのでどなたかお力をお貸しください。

<form>
<input type="file" name="filename">
</form>
でアップロードしたファイルのオリジナル名を取得するために
$_FILES['filename']['name'] からファイル名を取得しています。

このときオリジナルのアップロードファイルが保存されている
フォルダ名が特定(?)の文字の場合にのみ取得したファイル
名に一部のフォルダ名が残ったままとなります。

ローカルPCはWindowsマシンです。
たとえば「c:\My Document\takata\日報\file1.doc 」をアップロード
すると、取得したファイル名は「 日報\file1.doc 」となります。
また「 c:\My Document\takata\file1.doc 」に置いてアップロード
すると、きちんと「file1.doc 」というファイル名が取得できます。

いろいろ調べた結果「報」とか「ム」とか特定の文字がフォルダ名の
末尾につく場合フォルダ区切りの「\」がmagic_quotesのような機能で
「\\」となり、これでフォルダ区切りが判別できないようになっている
ような気もしますがよくわかりません。
また、その「特定の文字」はかなり数がありそうです。

PHPのバージョンに関係するものなのか、magic_quotes に関係する
ものなのか、「特定の文字」の文字コードに関係するものなのか、
プログラムによって回避できるものなのか、わからなくなりました。
アップロード元のオリジナルファイルを保存するフォルダ名を
変更して回避するという手段は不可能です。

回避策をよろしくご享受のほどお願いいたします。

サーバー環境:

Redhat Linux 7.2
Apache 1.3.22

PHP 4.2.3
   register_globals = On
   magic_quotes_gpc = On
   magic_quotes_runtime = Off
   magic_quotes_sybase = Off

プログラム出力HTML記述コード EUC

アップロード実行クライアント
 Windows 2000
  MSIE 6.0

以上です。

---------------------
高田 博
takata@ibs4u.ne.jp
---------------------