ホームページ  >  記事  >  バックエンド開発  >  SWFUpload はアップロードおよび保持時に中国語の文字を削除します

SWFUpload はアップロードおよび保持時に中国語の文字を削除します

WBOY
WBOYオリジナル
2016-06-13 12:15:44821ブラウズ

SWFUpload はアップロード時や保存時に漢字を削除しますか?
SWFUploadを使ってアップロードすると、ファイル名が英語であれば問題ないのですが、中国語だと表示されません。どこを修正すればい​​いのでしょうか?
まず、私がアップロードしたファイルには漢字が含まれています


アップロードフォルダーにアップロードした後のファイル名は (前の日付を自分で追加しました) という意味です。 「biao」だけがあり、「中国語」という 3 つの単語が消えています


完全なファイル名とパスがデータベースに表示されます


Upload.php は次のように変更されます
// $file_name = preg_replace('/[^'.$valid_chars_regex.']|. $/i', "",basename($_FILES[$upload_name]['name' ]));
$ ファイル名 = ベース名($_FILES[$アップロード名]['名前']);
$ファイル名=iconv("UTF-8","GB2312",$ファイル名);
この問題の解決方法がわかりません。アドバイスをお願いします~


-----解決策のアイデア------------- --------
.txt

$fn = '中文文件名.txt';<br />echo basename($fn);

これは PHP の古い問題です。中国語のパス (ファイル名) が認識されません

ただし:
1. アップロードされたファイル名にはパスが含まれません。はい、ベース名は必要ありません。
2. 中国語のファイル名を使用すると、オペレーティング システムのデフォルトの文字セットと競合します。 > 3. 長距離ファイルの名前を変更しない場合、同じ名前のファイルはどのように処理しますか?

------解決策----------------------
中国語のファイル名を使用することはお勧めできません理由は司会者が説明してくれました。
同じ名前のファイルについては、ファイル名の後に時間の文字列 (秒単位) を追加する予定ですが、大丈夫ですか?
ファイルをアップロードするたびに、時間乱数を使用してファイル名を生成し、元のファイル名を使用しないことをお勧めします。


<br />$oldname = 'myfile.xlsx';<br />$newname = createFileName($oldname);<br />echo $newname;<br /><br />function createFileName($name){<br />    // 获取后缀<br />    $name = explode('.', $name);<br />    $ext = array_pop($name);<br /><br />    // 获取微秒数<br />    $r = explode('.',microtime(true));<br />    $r = array_pop($r);<br /><br />    // 生成newname<br />    $newname = date('YmdHis').$r.mt_rand(1000,9999).'.'.$ext;<br />    return $newname;<br />}<br />

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