Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636

    download immagini ajax + php

    salve a tutti

    vi prego di armarvi di buona paziena e di darmi una mano, scusate la lunghezza del messaggio ma volevo essere quanto più chiaro possibile.

    ho la necessità di permettere il download di immagini tramite readfile() di php. la cosa non mi crea alcun problema se fatta in semplice php. il problema è farlo in ajax, per questo ho postato qui.

    ecco un pò di codice:

    ----------------------------------------------

    PARTE JAVASCRIPT
    Codice PHP:
    var ora;

    function 
    GetXmlHttpObject()
        {
            if (
    window.XMLHttpRequest) return new XMLHttpRequest();
            if (
    window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); 
            return 
    null;
        }

    function 
    smgo(percorso){
            
    ora GetXmlHttpObject();
        if(
    ora==null){
            
    alert("Aggiornare il browser!");
            return;
        }
        var 
    url "opera.php";
        
    ora.onreadystatechange=lavora;
        
    ora.open("POST"urltrue);
        
    ora.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        
    ora.send("percorso="+percorso);
    }

    function 
    lavora(){
            if(
    ora.onreadyState == 4)
            
    //--che devo fare qui?

    ----------------------------------------------

    PARTE HTML

    Codice PHP:
    <button onclick="smgo('immagini/1.jpg')">salva</button
    ----------------------------------------------

    PARTE PHP
    Codice PHP:
    $attuale $_REQUEST['percorso'];
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($attuale));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' filesize($attuale));
    readfile($attuale); 
    ----------------------------------------------

    SPIEGAZIONE CODICE E RICHIESTA

    -GetXmlHttpObject mi crea l'oggetto per le richieste asincrone
    -smgo prende il percorso del file da scaricare che viene passato con method post alla pagina opera.php, inoltre invoca la funzione lavora al cambio di stato della richiesta
    -lavora in teoria dovrebbe far comparire la finestra per il download

    Come devo strutturare la funzione lavora affinchè compaia la finestra di download?

    Grazie in anticipo per la risposta

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Premesso che non letto tutto, ma se è come ho capito:
    ora.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    che vuoi inviare ad ajax dati binari non puoi visto che non li accetta, ajax accetta solo stringhe.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    in sostanza devo cambiare totalmente modo di operare?
    mi sapreste consigliare un'alternativa 'indolore'( poco diversa ) che mi permetta il download di un file senza convertirlo in zip, senza ricaricare la pagina e senza aprire nuove schede?

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    In dolore, dipende come sopporti il dolore , scherzi a parte l'unica strada è inserire un iframe per eseguire upload e con ajax interroghi il server per capire quando ha finito upload, questo in teoria in pratica boh non conosco il php io l'ho fatto in asp
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.