質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • JavaScript

    16424questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • CakePHP

    2311questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

  • Firefox

    210questions

    Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Firefox 56.0でファイルダウンロードが行えない

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 291

kmj5963

score 2

前提・実現したいこと

CakePHP+Ext JSで開発したWebサイトにてファイルのダウンロード機能がありますが、Firefoxのバージョン56.0以降で正常に動作しません。

発生している問題・エラーメッセージ

Firefox 55.0では「ファイルを開く」「保存する」を選択するポップアップが表示され、ダウンロードが行えていましたが、Firefox 56.0にバージョンアップしたところ、ポップアップが表示されなくなり、ダウンロードが行えなくなりました。

該当のソースコード

○呼び出し方法
Report.download(Report.CSV, [], "items", "sample.csv", WEB_ROOT + "items/print_list/csv/", params);


○呼び出し先関数
Report.download = function(type, data, template, output_file, creater, params)
{
    var session_check_flg = false;
    //mainコントローラ以外はチェックを行う
    if(creater == undefined){
        session_check_flg = true;
    }else{
        if(creater.search(WEB_ROOT + 'main/') == -1){
            session_check_flg = true;
        }
    }
    if(session_check_flg){
        //セッションチェック
        Ext.Ajax.request({
            url      : WEB_ROOT + "reports/session_check/",
            method   : "GET",
            scope    : this
        });
    }

    // ダウンロード処理に必要な要素を追加
    if (Ext.get("ReportDownloadLayer") == null) {
        $(document.body).append("<div id='ReportDownloadLayer' style='display:block;'><iframe id='ReportDownloader' name='ReportDownloader' frameborder='0' width='0' height='0' css='display:none;visibility:hidden;height:0px;'></iframe></div>");
    }

    var userAgent = window.navigator.userAgent.toLowerCase();
    var appVersion = window.navigator.appVersion.toLowerCase();
    if (userAgent.indexOf("msie") > -1 && Ext.getCmp('SMC00201E') != undefined) {
        //IEは印刷時に警告が出るので、フラグで制御
        Ext.getCmp('SMC00201E').unloadWarning = false;
    }

    // 引数が渡されていない場合デフォルト値を設定
    creater = creater || WEB_ROOT + "reports/work/";
    params  = params  || { report_data : Ext.encode(data) };

    // パラメータ準備
    var items = [];
    if (Ext.isEmpty(params)) {
        items.push({ name : "report_data", value : Ext.encode(data) });
    }
    else {
        for (var key in params) {
            items.push({ name : key, value : params[key] });
        }
    }
    items.push({ name : "type",       value : type        }); // 出力種別
    items.push({ name : "form_fname", value : template    }); // フレームファイル名
    items.push({ name : "pdf_fname",  value : output_file }); // 出力ファイル名
    items.push({ name : "page_break", value : ""          });

    // サブミットのためのフォーム生成
    var form = new Ext.FormPanel({
        renderTo       : "ReportDownloadLayer", // フォームをレンダリングするエレメント
        url            : creater,               // URL
        standardSubmit : true,                  // Ajaxではなく通常のPOSTをする
        defaults       : { xtype : "hidden" },
        items          : items                  // パラメータ
    });
    form.getForm().getEl().set({target:"ReportDownloader"});

    // 帳票出力サーブレットへサブミットしてフォームを削除する
    form.getForm().submit();
    form.destroy();
};

試したこと

開発者ツールの「ネットワーク」でヘッダ情報を確認したところ、POSTの要求URLのパスが異なっております。

Firefox 55.0
http://xxxxx/chk2_re/app/webroot/index.php/items/print_list/csv/
Firefox 55.0
Firefox 56.0
http://xxxxx/chk2_re/
Firefox 56.0
⇒55.0ではパスが通っているが、56.0はパスが途中で切れている状況

補足情報(言語/FW/ツール等のバージョンなど)

・OSはWindows7 32bit、Windows10 64bitで確認
・IEやChromeではダウンロード可能

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • kentei_syunrai

    2017/11/18 17:45 編集

    Ext JS を利用していますか? であれば、ほかにも同様の問題が挙がっているようです。https://es.stackoverflow.com/questions/107831/firefox-56-me-dirige-a-una-url-diferente-al-enviar-un-formulario-con-extjs すぐには回答がでない問題かもしれません。。

    キャンセル

  • kmj5963

    2017/11/20 14:12 編集

    情報いただきありがとうございます、助かります。 Ext JSを使用していましたので、リンク先の事象とおそらく同じ内容と考えられます。 ご提供いただいたURLを定期的にチェックしてみます。 (前提に記載していた開発言語の方は修正しております)

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • JavaScript

    16424questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • CakePHP

    2311questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

  • Firefox

    210questions

    Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ