0

リッチ Javascript クライアントからのファイルのアップロードを受け入れる Apache Web サーバーを備えた CentOS 6 マシンがあります。ファイルはphpで保存されますmove_uploaded_file

クライアントとサーバー (php) ファイルはすべて iso-8859-1 でエンコードされており、サーバー上のデータベースも同様です。また、html 出力は iso-8859-1 を charset として宣言します。

ウムラウト (またはその他の未知の特殊文字) を含むファイルがエラーになることを除いて、ファイルのアップロードは今のところ問題なく動作します。たとえば、ファイル1.Nachtrag Gemeinde Höchst.pdfはアプリケーションで正しくエコーされ、ファイルをダウンロードするために作成されたリンクには正しい (url-) エンコーディングがあります。

http://ourdomain/saba/data/dok/00000092/1.Nachtrag%20Gemeinde%20H%C3%B6chst.pdf

しかし、このリンクをクリックすると、404 エラーが表示されます。シェルでファイルを検索すると、 として表示されます1.Nachtrag Gemeinde H?chst.pdf。これは、何らかの間違ったエンコーディングを示していますが、シェルが utf-8 エンコーディングを使用していることが原因である可能性があります。

私たちは何を忘れましたか?

4

1 に答える 1

0

@Amadanが正しく指摘しているように、保存する前にファイル名をutf-8に変換する必要があります。

 $filename = iconv('ISO-8859-1', 'UTF-8', $filename);
 $is_successful = @move_uploaded_file($tmp_filename, $ordnername . DIRECTORY_SEPARATOR . $filename);
于 2012-12-10T08:58:12.533 に答える