お世話になります。
XOOPSでサイト構築しています。
サイトの環境は末尾に示します。
d3downloads でアップロードしたファイルをダウンロードしようとすると拡張子が消えてしまいます。
ブラウザは Chrome(バージョン 56.0.2924.87)とマイクロソフト Edge です、ファイル名へのマウスオンでは平常にファイル名が表示されますが、ダウンロードすると
Chrome の場合はたとえば filename.pdf が filename- となります。
Edge では filename.txt になります
(この場合は拡張子のないファイルは既定でテキストエディタで開く設定になっているためと思われます)
IE11 の場合は日本語ファイル名は文字化けしますが、拡張子は消えずにダウンロードできます。
文字化けは http://www.illareya.net/help/ie11_download_error_bug/01.html のやり方で解消できます。
なお、クライアントPCは windows10 です。
ソースを覗いてみました。
xoops_trust_path/modules/d3downloads/include フォルダ内の
download_functions.php ファイルの 121 行以降の関数 d3download_chrome_filename
での処理で拡張子が切り取られているようです。
この関数を通さないようにすると、とりあえずは正常にダウンロード出来るようです。
なぜこのような処理をしているのか? また、この処理をパスして使い続けて問題ないのか?
それから IE11 の文字化けはサーバー(d3downloads)側の設定を変える事で避けることが出来るのか?
以上、ご教示いただければ幸いです。よろしく願いいたします。
サーバーの環境
XOOPS Cube Legacy 2.2.1
LANGUAGE japanese EUC-JP
SERVER Apache
PHP 5.2.11
MySQL 5.1.51
d3downloads v1.5
コメント(1)

自己フォローです。
まず、xoops_trust_path/modules/d3downloads/include/download_functions.php
の63行目をコメントアウトしました。
// if ( $ua == 'Chrome' ) $filename = d3download_chrome_filename( $filename ) ;
なぜこのような処理をしているか不明なままですが・・・
Edge がなぜ Chrome と同じ処理がされるのかは、$_SERVER['HTTP_USER_AGENT']が返す文字列が、「Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10162」
で Chrome を含むため関数 d3download_get_ua_type が "Chrome" を返すためのようです。
参考 URL:https://urashita.com/archives/4489
IE11 でのファイル名の文字化けへの対応
xoops_trust_path/modules/d3downloads/include/download_functions.php
の関数 function d3download_get_ua_type 104 行目付近の "MSIE" の処理を以下のように変更しました。
} elseif ( stristr( $_SERVER['HTTP_USER_AGENT'] , 'MSIE' ) || stristr( $_SERVER['HTTP_USER_AGENT'] , 'Trident' ) ) { $ua_type = 'IE';
参考 URL:http://www.msng.info/archives/2014/04/internet-explorer-11-user-agant-change.php
以上です。