ホーム > フォーラム > 質問箱 > d3downloads でダウンロードすると拡張子が消える

d3downloads でダウンロードすると拡張子が消える
投稿者: avocet | 投稿日時: 2017/3/11 12:01 | 閲覧: 3005回
avocet

お世話になります。

 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)

新しいものから | 古いものから | ネスト表示 | RSS feed
Re: d3downloads でダウンロードすると拡張子が消える 
投稿者: avocet | 投稿日時: 2017/3/16 16:14
avocet

自己フォローです。

 まず、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

 以上です。

    投票(0)

    新しいものから | 古いものから | RSS feed
     
    To Top