Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Download di files

  1. #1

    Download di files

    Ciao a tutti...ho bisogno di confrontarmi con qualcuno per cercare di risolvere un problema. Ora cerco di spiegarvi quello che devo fare:
    Devo consentire agli utenti che accedono al mio sito di poter scaricare una serie di file contemporaneamente. Per questo motivo girando su internet ho trovato il modo per zippare una serie di file e far scaricare il file zip. Nel seguente modo:
    Codice PHP:
    include("zip.lib.php"); 
    $ziper = new zipfile(); 
    $ziper->addFiles(array("cartella/file1.pdf""cartella/file2.pdf""cartella/file3.pdf""cartella/file4.pdf""cartella/file5.pdf")); 
    $ziper->output("'file_zip.zip"); 
    echo(
    "[url='file_zip.zip']Download globale dei pdf[/url]");
    exit; 
    Il problema è che i files sono "temporanei", nel senso che si trovano fisicamente nel db (in campi BLOB) al momento della chiamata di funzione creo una cartella nel quale attraverso una procedura ORACLE faccio passare i files pdf che vuole l'utente dal db alla cartella appena creata. Dopo di che si crea lo zip, l'utente lo scarica e successivamente DEVE essere cancellata la cartella con tutto il suo contenuto (i files pdf, il file zip e la cartella).
    Per creare la cartella utilizzo questa procedura:
    Codice PHP:
    $cartella='cartella';
    $path="/".$cartella;
    if(
    mkdir($cartella,0777)==1){
        
    $risultato="hai appena creato la categoria di nome :$cartella ";
    }else{
        
    $risultato="non hai creato niente, forse la cartella già esiste";

    Per cancellare i files e la cartella utilizzo questa procedura:
    Codice PHP:
    unlink("cartella/file1.pdf");
    unlink("cartella/file2.pdf");
    unlink("cartella/file3.pdf");
    unlink("cartella/file4.pdf");
    unlink("cartella/file5.pdf");
    unlink("file_zip.zip");
    if(
    rmdir($cartella)==1){
            echo(
    "è stato cancellato tutto");
        }else{
            echo(
    "non ho cancellato la cartella");
        } 
    Avevo scritto la procedura per la creazione dello zip e per la cencellazione dei file nella stessa pagina php...però in questo modo la pagina mi consentiva di scaricare il file zip ma non provvedeva a cancellare tutti i file.
    Come posso fare? Devo mettere un ulteriore link oppure far in modo che al click sul link "Download" si scateni l'evento della cancellazione?
    Potete aiutarmi?
    Grazieeeeeee

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    dai alla cartella, per nome, il timestamp del momento in cui viene creata. Cancella tutte le cartelle create prima di un certo momento quando un utente ricomincia la procedura di download. Probabilmente si può fare di meglio ma dipende dal server e dal servizio di hosting.

  3. #3
    Bella idea...
    solo che il "problema" in questo modo si ha perchè io non posso cancellare la cartella se non è vuota, quindi prima devo cancellare i file uno per uno ma non so come si chiamano...non so se mi sono spiegata...come posso risolvere questo problema???

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    puoi sempre ottenere la lista dei file all'interno di una cartella usando glob
    Codice PHP:

    foreach(glob("nomecartella/*") as $file){
        
    unlink("nomecartella/" $file);
    }

    //qui puoi cancellare 'nomecartella' 
    Questo funziona se tutti i file si trovano direttamente nella cartella 'nomecartella', se la struttura è più complessa, cioè se ci sono sottocartelle allora dovresti cancellare tutti i file con uno script ricorsivo, ma non credo sia il tuo caso.

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.