ホームページ >バックエンド開発 >PHPチュートリアル >ファイルアップロード時に中国語ファイル名が取得できない問題の解決方法

ファイルアップロード時に中国語ファイル名が取得できない問題の解決方法

WBOY
WBOYオリジナル
2016-06-13 13:43:401207ブラウズ

ファイルアップロード時に中国語のファイル名が取得できない
簡単なサーバーサイドのファイルアップロード処理コードを書いたのですが、英語名のファイル名は正常にアップロードされ、中国語名のファイル名はエラーにはなりませんでしたが、アップロード後にファイル名が変更されました。「document.doc」など空の場合、アップロード後は「.doc」になります。何らかの理由で、ファイル名を空にすることはできません。

以下は私が書いたコードです。myfile はクライアントによってアップロードされた入力の名前です。

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?
$upload_path = $_SERVER['DOCUMENT_ROOT']."/upload";
$dest_file = $upload_path.basename($_FILES['myfile']['name']);

if(move_uploaded_file($_FILES['myfile']['tmp_name'].$dest_file))
{
  echo "文件已上传至服务器!";
}
else
{
  echo "发生错误".$_FILES['myfile']['error'];
}
?>



------解決策------ -
bool move_uploaded_file ( string $filename , string $destination )

この関数は、filename で指定されたファイルが正当なアップロード ファイル (つまり、PHP の HTTP POST アップロード メカニズムを通じてアップロードされたファイル) であることをチェックし、保証します。ファイルが正当な場合は、宛先で指定されたファイルに移動されます。

この関数には渡すための $destination パラメータが不足していると思います。
------解決策------------------
この場合、基本的にはコーディングから始めれば問題ありません。
ファイル名のエンコーディングを変換します

$dest_file=iconv('UTF-8','GBK',$dest_file);

utf-8 から gbk または gbk から utf -8 どれが正常か自分の目で見てみましょう。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。