久しぶりに古いシステムの改修を行ったときのお話です。

WordPressがまだバージョン2とか3の時だった頃の、スクラッチで構築した

クライアントのWebシステムに、今更ながらファイルのアップロード機能を付けてほしいとの依頼。

サーバー上にお知らせを公開する際に、併せてPDFファイルも公開したいとのこと。また、タイトルをクリックするとそのままそのファイルが開くようにしたいという要望に応えるべく作業始めたのです。

もはやWebサイトではWordpressを利用することに慣れてしまった自分としては今更アップロードの
機能を構築するのはちょっと面倒w

ほんと、便利なシステムが世の中に出てしまいましたねー。

何が便利って、日本語ファイル名のデータをアップロードできるんですから。

以前は日本語ファイル名をアップロードするとサーバー側で文字化けしちゃって、FTPではエラー起きちゃって削除できなくなったファイルをSSHで接続してコマンドで削除するという手間が発生したりと大変だったんですから。

だからそれを回避するためにファイル名は半角英数字に変更したり、ダウンロード時に元ファイル名を指定して出力とか色々と考えてたんです。

気を付けることは覚えていたんですが、そのソースを忘れてしまってましたので、次回また作業があった場合用に記録しておきます。

 

$upload_file = mb_convert_encoding($_FILES['file_data']['name'], "UTF-8", "AUTO");

$path="../topic_data/".$upload_file;

move_uploaded_file($_FILES['file_data']["tmp_name"], $path);

 

mb_convert_encodingでファイル名を変換しておくと良いらしい。

第3引数にAUTOを指定しておくと、元のエンコードは大して気にしなくていいみたい。

そして契約しているWebサーバーがUTF-8指定なので、それに合わせて第2引数にはUTF-8を入れておくと、これでアップロードするファイル名が日本語でも文字化け防止に役立つそうな。

まあ気にせず半角英数字にしてもらった方が無難なんだけど。