東京都練馬区。Wordpressはおまかせ。印刷・ホームページなど販売促進のためのデザインを提案します。

デザイン事務所ダウンアンダー

営業
10:00-
19:00

newbb_fileupで日本語名ファイル添付時に名前が消える

     2012/01/09   技術ノート    野村貞次

XOOPSのフォーラムでファイル添付が必要な場合、newbb_fileupを使うことがあります。
newbb_fileup:bluemooninc

CentOS5、XOOPS Cube Legacyでこれを使用すると、添付ファイルの名称が消えてしまうことがあります。

ピクチャ 2

ここでアップしているのは「日本語.doc」というファイルです。
「01.doc」「abc.doc」「091116会議.doc」等は、正常に表示されます。
このままでも 、正常にダウンロードはできます。
ただしファイル名は「doc.doc」となってしまいます。

調べてみると、/modules/newbb/post.phpで最初にファイル名を取得した時点で消えています。

これは「php.iniのmbstring設定に追加設定が必要か?」「UTF-8にうまく渡せていないのか?」等々考えましたが、他のPHPプログラムはすべてうまく動いています。

「php5 日本語ファイル名」 でググってみたところ、 
http://blogs.liquidst.jp/content/drupal6-php5で日本語名のファイルがコンテンツに添付できない問題/
というページが見つかりました。

php5のbasename関数にバグがあり、これはphp6まで放置されるとのこと。
post.php内でファイル名取得時にこれが使われています。

そこで上記ページを参考に対処。

$file->filename = file_munge_filename(trim(basename($_FILES[‘files’][‘name’][$source]), ‘.’), $extensions);

$file->filename = file_munge_filename(trim(end(mb_split(“/”,$_FILES[‘files’][‘name’][$source])), ‘.’), $extensions);

basename関数を他の関数の組み合わせで置き換えました。

これで無事に日本語名のファイルをアップできるようになりました。

ピクチャ 3
newbb_fileupがバージョンアップして当該箇所の記述が変更になっていたので、修正します。

post.phphの337行目あたり。

$upfile_name  = end(mb_split(“/”,$_FILES[‘upfile’][‘name’])); //basename bug
//    $upfile_name  = basename($_FILES[‘upfile’][‘name’]); //Local File Name ( Use basename for security )

     2012/01/09   技術ノート    野村貞次

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

 こちらの記事も読んで見ましょう

newbb_fileupで日本語名ファイル添付時に名前が消える 東京都練馬区。Wordpressはおまかせ。印刷・ホームページなど販売促進のためのデザインを提案します。

Copyright©デザイン事務所ダウンアンダー,2009 All Rights Reserved.

ページ先頭へ