[PHP-users 12594] Re: 〔関連〕ファイルアップロード時にファイル名が正しく扱えない問題
NAKAMURA Takeshi
php-users@php.gr.jp
Fri, 17 Jan 2003 18:55:54 +0900
仲村です。
From: keiko sakamoto <sakamoto@optsp.co.jp>
Date: Fri, 17 Jan 2003 17:23:29 +0900
Subject: [PHP-users 12589] Re: 〔関連〕ファイルアップロード時にファイル名が正しく扱えない問題
> 仲村さんの回答で、ファイルアップロードにより、フルパスを取得できるのであれば
> 作成頂いたmb__basename()を使用できると思うのですが、
> 以下のソースで$_POST['postfile']でファイル名のフルパスが取得できません。
multipart だと、取れないんですね。それは気づきませんでした。
> C:\test\サンプル\test.txt
> ↓ ↓ ↓
> C:\test\サンプル\\test.txt
>
> という風に文字化けしてしまい、
> ファイル名がサンプル\\test.txtになっていると考えられます。
それは、PHPが送られてきた文字コードを勘違いしているからなのでしょう。
私の環境では以下のスクリプトにクライアント(IE6, Mozilla1.3a(ともにWin2K))
から「C:\test\サンプル\test.txt」を与えたところ正常に「test.txt」と表示
されました。(これが、期待される動作ですよね?)
<form enctype="multipart/form-data" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<input type="file" name="postfile" size="90" class="uploadText">
<input type="submit" value="送信"> </form>
<?php echo mb_convert_encoding($_FILES['postfile']['name'],
"EUC-JP", 'eucjp-win, sjis-win, JIS'); ?>
> 以下の設定を変更すれば回避できるのでしょうか。
>>(略 私のphp.ini)
私も、あまり使い込んでいないので 関係有りそうなところを挙げてみた訳です。
マニュアルに載っている推奨設定ですから、バックアップを取って試してみては
如何でしょうか。
> そもそもアップロードに関しては
> $_FILES[]で値を取得するので、
> POSTは使わない方がよいと考えているのですが…
そうですね、multipart だと $_POST に値が入らないし
http://jp2.php.net/manual/ja/features.file-upload.php
にも、$_FILES で書いてありますから $_FILES が推奨のようですね。
勉強になります。
> フォルダ名、ファイル名に日本語を使用しない様にする方が無難ですかね?
私の所では、うまく動いているので環境によるのでしょう。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
関西沖縄青年の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
仲村 武 <1yen@sh.rim.or.jp>