OVH Cloud OVH Cloud

Suppression d'un fichier apres telechargement

3 réponses
Avatar
Frederic Vailleau
Bonjour à tous,

Je voudrais donner la possibilité aux internautes de télécharger plusieurs
fichiers en simultané.
Pour ce faire, je créé un fichier zip sur le serveur et j'aimerais savoir
s'il est possible de détecter la fin du téléchargement pour pouvoir
supprimer ce fichier du serveur. (histoire d'éviter de le faire via des
batchs...)

Par la même occasion, si vous aviez un petit bout de code pour lancer le
téléchargement à l'ouverture de la page (sans avoir à cliquer sur un lien),
ça serait bien cool ;-)

Merci beaucoup pour vos infos.

Fred

3 réponses

Avatar
(¯`·..Yttrium ...·´¯)
Par la même occasion, si vous aviez un petit bout de code pour lancer le
téléchargement à l'ouverture de la page (sans avoir à cliquer sur un
lien),

ça serait bien cool ;-)



Bjr,
En ce qui concerne la fn du downlaod , je ne sais pas.
En revanche, pour lancer un download directement , il suffit d'envoyer les
bons header.
Exemple :

En remplacant les variables bien sur...

<?
header("Content-disposition: attachment; filename=$nomdufichier");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $tailledufichier");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0,
pre-check=0");
header("Expires: 0");
readfile($cheminaccesaufichier);
?>


Je suppose que le tout peut etre amélioré bien sur..

Avatar
CrazyCat
Frederic Vailleau wrote:
Je voudrais donner la possibilité aux internautes de télécharger plusieurs
fichiers en simultané.
Pour ce faire, je créé un fichier zip sur le serveur et j'aimerais savoir
s'il est possible de détecter la fin du téléchargement pour pouvoir
supprimer ce fichier du serveur. (histoire d'éviter de le faire via des
batchs...)
Par la même occasion, si vous aviez un petit bout de code pour lancer le
téléchargement à l'ouverture de la page (sans avoir à cliquer sur un lien),
ça serait bien cool ;-)


je pense avoir tout ce qu'il te faut d'un coup...
partons du principe que tu as créé download.zip et que l'ouverture de
test.php doit l'envoyer:

test.php
<?
header("Content-type: application/zip");
header("Content-Disposition: inline; filename="download.zip"");
header("Content-Transfer-Encoding: binary");
readfile("download.zip");
unlink("download.zip");
?>

Je ne garantis pas que le unlink fonctionne, il faudrait alors lire
download.zip et le mettre dans une variable, faire le unlink et ensuite
envoyer les headers et afficher le contenu de ton .zip
Si le .zip est gros, c'est assez... c'est moche.

--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net

Avatar
Vincent Lascaux
Pour ce faire, je créé un fichier zip sur le serveur et j'aimerais savoir
s'il est possible de détecter la fin du téléchargement pour pouvoir
supprimer ce fichier du serveur. (histoire d'éviter de le faire via des
batchs...)


Tu peux peut être jeter un oeuil à PEAR::File_Archive (de mon cru,
http://pear.php.net/package/File_Archive)
Ca te permet de faire ca :

$source = File_Archive::read('dossier'); //il y a plein d'autres
possibilités selon tes besoins
$source->extract(
File_Archive::toArchive(
'dossier.zip', //Nomme l'archive dossier.zip
File_Archive::toOutput() //Et l'envoie au client
)
);

L'archive est crée dynamiquement et envoyée petit à petit au client, sans
passé par un fichier (ce qui peut au passage se révellé interessant en terme
de perf).
Tu peux choisir tar, tgz, tbz ou zip (simplement en changeant l'extension de
'dossier.zip')

--
Vincent