PHP アップロードファイル文字化け
PHPで日本語名のファイルをアップロードすると文字化けする場合の対処
もしくは、特定の文字コードに変換してアップロードしたい場合
先に言っておくと
関数
mb_convert_encoding を使う。
例題はfile1.phpというフォームからファイルをアップロードして
「doc」というフォルダーに保存するプログラム
file1.php
<html>
<head>
<tilte>アップロードフォーム</title>
</head>
<body>
<form method="POST" action="file2.php" enctype="multipart/form-data">
ファイル:
<input type="file" name="uploaded" size="50" />
<input type="submit" value="アップロード" />
</form>
</body>
</html>
file2.php(文字化けするタイプ)
<?php
move_uploaded_file($_FIELS['uploaded']['tmp_name'],'./doc/'.$_FILES['uploaded']['name']);
echo"アップロード成功しました。";
?>
file2.php(文字化けしないタイプ)
<?php
$str = './doc/'.$_FILES['uploaded']['name'];
$str = mb_convert_encoding($str, "SJIS", "AUTO");
move_uploaded_file($_FILES['uploaded']['tmp_name'], $str);
echo"アップロード完了しました。";
?>
補足
mb_convert_encoding(エンコードしたい部分, "変換したいコード", "変更前のコード")
AUTOにしておけば特に前のコードを気にすることが無い。
Windowsベースで日本語ファイルを保存する場合には
SJISでないと文字化けするっぽ。