Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043

    salvare immagini da una scheda prodotto

    ciao a tutti,
    mettiamo che ho una scheda prodotto con tutti i dati, una descrizione e le relative foto.
    Io vorrei far in modo di dare all'utente la possibilità con un'unico link di fargliele scaricare tutte sul suo desktop, come posso fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    112
    Niente di troppo complesso.

    Presupponendo che tu conosci l'indirizzo fisico delle imamgini sul server... in php usi la classe Zip per creare un archivio vuoto (quello che segue è un esempio preso da php.net)

    Codice PHP:
    $percorso_file="scrivi_qui_il_percorso_del_file";
    $zip = new ZipArchive();
    $filename $percorso_file;

    if (
    $zip->open($filenameZIPARCHIVE::CREATE)!==TRUE) {
        exit(
    "cannot open <$filename>\n");
    }

    $zip->addFile($thisdir "/too.php","/testfromfile.php");
    $zip->close(); 
    Dove vedi i richiami ad addFile ci aggiungi il percorso delle immagini su disco sul server.

    Un volta creato e chiuso il file zip, ti basta mandare gli header per farlo scaricare (attenzione non devi aver fatto nessuna echo prima o mandato a video parti di html), con un codice simil e a questo
    Codice PHP:
    header("Content-type: Application/octet-stream");
    header("Content-Disposition: attachment; filename=immagini_zippate);
    header("
    Content-DescriptionDownload PHP");
    readfile(
    $percorso_file); 

    Gabriele

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Fantastico, grazie!
    Quindi me le zippa anche
    domani ci provo ad implementare il tuo codice nel mio sito.

    L'unico dubbio nella riga dove mi dici di mettere il percorso delle immagini:

    Codice PHP:
    $zip->addFile($thisdir "/too.php","/testfromfile.php"); 
    così potrebbe andar bene?

    Codice PHP:
    $percorso_file="../image_auto"$zip = new ZipArchive(); 
    $filename $percorso_file;  
    if (
    $zip->open($filenameZIPARCHIVE::CREATE)!==TRUE) {     
    exit(
    "cannot open <$filename>\n"); }  
    $zip->addFile($thisdir "../image_auto","QUI CHE CI VA??????"); 
    $zip->close(); 

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    112
    Allora, qui

    Codice PHP:
    $zip->addFile($thisdir "../image_auto","QUI CHE CI VA??????"); 
    il secondo parametro "qui che ci va" è il nome che deve avere il file dentro al file zip. E' facoltativo, puoi anche non specificarlo.

    PEr quanto riguarda il tuo codice...se quel $percorso_file="../image_auto" è una cartella non sono sicuro che te li zippi tutti insieme, dovresti provare. So che c'è anche il metodo $zip->addEmptyDir con cui creare una cartella vuota nello zip per poi inserirci i files.

    Aggiungo un appunto: se non ti funziona ziparchive fai attenzione perche si tratta di una estensione che va abilitata (spesso lo è gia di default). Trovi una interessante e breve guida qui.

    Gabriele

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Allora mi sa che non ho capito bene.
    Il tuo codice serve per zippare una immagine e non più di una come dicevo ad inizio topic?

    Altra cosa
    Codice PHP:
    $zip->addFile($thisdir "../image_auto","QUI ALLORA CI VA IL NOME DEL FILE, ES: AUTO.JPG"); 

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    112
    Nono stai facendo un po di confsione

    Dunque il codice che ti ho proposto lo puoi usare per zippare 1 o 1000 files.
    Il metodo
    Codice PHP:
    $zip->addFile($thisdir "../image_auto","QUI CHE CI VA??????"); 
    lo usi per aggiungere 1 file allo zip. Quindi una immagine. Ovviamente lo puoi usare anche 100 volte di fila, oppure scorrere una cartella con un ciclo e inserirci tutti i files imamgine che ci trovi dentro.

    Da questo codice qui che tu hai riportato:
    Codice PHP:
    $percorso_file="../image_auto"$zip = new ZipArchive();
    $filename $percorso_file;  
    if (
    $zip->open($filenameZIPARCHIVE::CREATE)!==TRUE) {     
    exit(
    "cannot open <$filename>\n"); }  
    $zip->addFile($thisdir "../image_auto","QUI CHE CI VA??????");
    $zip->close(); 
    mi viene da pensare che questo "image_auto" vada sostituito con il reale nome del file. Se ne vuoi inserire piu di uno dovrai ripetere addFile piu volte, per esempio:
    Codice PHP:
     $zip = new ZipArchive();
    $filename $percorso_file;  
    if (
    $zip->open("file.zip"ZIPARCHIVE::CREATE)!==TRUE) {     
    exit(
    "cannot open <$filename>\n"); }  
    $zip->addFile("cartella_immagini/immagine1.jpg");
    $zip->addFile("cartella_immagini/immagine2.jpg");
    $zip->addFile("cartella_immagini/immagine3.jpg");
    $zip->addFile("cartella_immagini/immagine4.jpg");
    //e via dicendo...
    $zip->close(); 
    il "qui che ci va" lascialo perdere, è un parametro facoltativo che a te non serve.

    Gabriele

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Ok, domani ci provo, grazie ancora della tua disponibilità.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Ho potuto riprendere solo oggi a lavorare sul tuo script, queste sono le modifiche apportate.
    Che ne dici va bene? Prima di pubblicarlo e fare casini mi piacerebbe avere un parere.

    Codice PHP:

    $sql 
    "SELECT b_photousato.* 
            FROM b_photousato 
            WHERE b_photousato.id_usato = '"
    .$id."'";
    $result mysql_query($sql,$conn) or die (mysql_error());
    $row_record mysql_num_rows($result);

    if (
    $row_record>0){

    $zip = new ZipArchive();
    $name "test.zip";
    if (
    $zip->open($nameZIPARCHIVE::CREATE) !== true) {
    print(
    "Impossibile creare l'archivio!");
    }

    while(
    $row=mysql_fetch_array($result)){

    $foto $row['foto'];
    $directory "../images_photousato/"

    $zip->addFile($directory.$foto);

    }

    $zip->close();
    header("Content-type: Application/octet-stream");
    header("Content-Disposition: attachment; filename=immagini_zippate");
    header("Content-Description: Download PHP");

    }



    else{


  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Ero troppo curioso di vedere cosa succedeva e l'ho pubblicato lo stesso.
    Mi da questo errore:

    Fatal error: Class 'ZipArchive' not found in /web/htdocs/www.sito.com/home/pann_contr_comune/include_admin_query_ins_usato.php on line 952

    alla riga 952 ho questo codice:

    $zip = new ZipArchive();

    quale problema potrebbe essere?

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    up

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.