Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Forzare Download

  1. #1
    Utente di HTML.it L'avatar di danlupo
    Registrato dal
    Jul 2009
    Messaggi
    314

    Forzare Download

    Salve,

    visto che ho guardato sul manuale ufficiale su tutti i collegamenti delle prime tre pagine di risultati di google, sui risultati del search del forum e sono, per il MIO LOCALHOST TUTTE SBAGLIATE !!

    mi spiegate come funziona il forzare del download di un file.
    GRazie

    Il codice che uso è questo:

    In pratica uso un MVC

    Faccio arrivare ad un pagina caricata in AJAX un url del tipo

    codice:
          var url='http://localhost/omero/downloader/download/'+x;
          $('#corpo').load(url);;
    Dove x è il percorso del file in cui sono state sostituite le "/" con delle _
    La funzione Download di Downloader.php

    trasmette semplicemente l'url ad una pagina di download

    codice:
        function download($file) {
            $this->view->filename=$file;
             $this->view->render('downloader/download',1);
            }
    L'uno dopo il downloader/download indica che non viene caricato nulla (header stili, js etc..) al di fuori del codice della pagina

    Nella pagina download ho questo codice (
    codice:
    $filepath=$this->filename;
    $files=  str_ireplace("_","/",$filepath);
    $files=DROOT."reservedarea/downloadcenter/".$files;
    $dimensione_file=filesize($files); 
    header('Content-Description: File Transfer'); 
    header('Content-Type: ' . "application/force-download"); 
    header("Content-Disposition: attachment; filename=pippo"); 
    header("Content-Description: Download FILE"); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
    header('Pragma: public'); 
    header("Content-Length: $dimensione_file"); 
    readfile($files);
    Come vedete sono solo dati php e non ci sono echo e simili prima degli header.
    Prendo il file, riconverto gli _ in / gli aggiungo il percorso di base della cartella download (DROOT."reservedarea/downloadcenter/)
    e gli provo a forzare il download.

    Quello che ottengo è una pagina di questo tipo:

    �PNG  IHDR����M�tEXtSoftwareAdobe ImageReadyq�e<�"iTXtXML:com.adobe.xmp �߲��DIDATxڤ� �eey�������z��hh�A A4J>q��KLro���e�0�|��f�r�J���h�7�DM�F�D��A� �nhz�������}�w��zO���Ut�9{���y�;��s���������� ���t������K�MMM��?v�X���ԟ����D����@���E�걎=Z?���s .���G�سgO}�Wij�=-[~g ��lj�ಁ9�*�sf��駟
    che penso sia la trascrizione dei dati del file stesso

    Ditemi voi come posso forzare un download

    Daniele
    Se rispondo ad una discussione è perchè so quello che dico ed ho voglia di rispondere, non per aumentare il contatore messaggi

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Il codice funziona solo che è un po complicato farlo via ajax il download di un file, fai prima a farlo con un iframe 'invisibile'

    codice:
    <iframe id="my_download" style="display:none;"></iframe>
    <script>
        function downloadFile(f){
            document.getElementById('my_download').style.display = 'block';
            document.getElementById('my_download').src = 'http://localhost/omero/downloader/download/'+f;
            document.getElementById('my_download').style.display = 'none';
        }
    </script>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.