Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: jQuery Plugin jquery.fileDownload.js

Aktivity
Avatar
Standa
Člen
Avatar
Standa:15.7.2014 18:37

Ahoj všem,
používáte někdo tento plugin? Mám problém s jeho rozchozením na soubory PDF. Určitě to souvisí s tím, že je potřeba nastavit, k vůli integrovaným prohlížečům, Cookie odesílané serverem na "Content-Disposition: attachment; filename=Repor­t0.pdf". Bohužel nevím jak to zařídit, download je zařízen pomocí iframe a opravdu v hlavičce odezvy u helpu je "Set-Cookie fileDownload=true; path=/" a "Content-Disposition attachment; filename=Repor­t0.pdf" Přímo v pluginu je uvedeno:

Díky za pomoc

 
Odpovědět
15.7.2014 18:37
Avatar
Standa
Člen
Avatar
Standa:16.7.2014 22:39

Tak jsem to nakonec vyřešil tímto pluginem využívající action formu a hidden inputy pro odeslání parametrů, např. pro PHP:

/*
 * --------------------------------------------------------------------
 * jQuery-Plugin - $.download - allows for simple get/post requests for files
 * by Scott Jehl, [email protected]
 * http://www.filamentgroup.com
 * reference article: http://www.filamentgroup.com/lab/jquery_plugin_for_requesting_ajax_like_file_downloads/
 * Copyright (c) 2008 Filament Group, Inc
 * Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses.
 * --------------------------------------------------------------------
 */

jQuery.download = function(url, data, method){
        //url and data options required
        if( url && data ){
                //data can be string of parameters or array/object
                data = typeof data == 'string' ? data : jQuery.param(data);
                //split params into form inputs
                var inputs = '';
                jQuery.each(data.split('&'), function(){
                        var pair = this.split('=');
                        inputs+='<input type="hidden" name="'+ pair[0] +'" value="'+ pair[1] +'" />';
                });
 console.log(inputs);
                //send request
                jQuery('<form action="'+ url +'" method="'+ (method||'post') +'">'+inputs+'</form>')
                .appendTo('body').submit().remove();
        };
};

s jednoduchým voláním jQuery:

$.download('download.php','filename=report.pdf');

volající toto PHP:

<?php
$file = 'temp/report.pdf';

 ob_clean();
    header('Content-Description: File Transfer');
    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename='.basename($file));
 readfile($file);
exit();
?>

Tak třeba to někomu pomůže.
Standa

 
Nahoru Odpovědět
16.7.2014 22:39
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.