Segui il video qui sotto per vedere come installare il nostro sito come web app sulla tua schermata principale.
Nota: Questa funzionalità potrebbe non essere disponibile in alcuni browser.
Pubblicità
$size
, è la dimensione del file che ottieni da filesize()
.$nome_utente
è il nome dell'utente collegato, ma puoi anche non usarlo e dare un nome generico allo zip (era per rispecchiare quanto facevi tu.unlink()
, quindi viene eliminato dopo il download.No, nella mia idea, ancora da terminare, quando richiedo archivio.zip, questo si popola all'istante con i files dell'utente che li sta richiedendo. Non c'è possibilità di scaricare files di altri. Una volta scaricato, l'archivio si cancella e l'utente che arriva dopo è pronto per scaricare il suo...Quindi sapendo il link che è uguale per tutti ("archivio" o il nome utente che è conosciuto) potrei riuscire a scaricare l'archivio degli altri con la giusta tempistica?
E se in 2 richiedolo l'archivio contemporaneamente (se usi "archivio")?
$file = 'top.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
Perché senza scomodare ulteriori funzioni, tipo md5, ho praticamente risolto.Mah...
Continuo a non capire perchè non hai seguito quanto ti dicevo sopra. Avevi meno della metà di questi problemi e semplificavi tutto.
Dovresti postare anche la parte dove fai l'unlink, altrimenti è difficile capire il motivo.
Alla readfile probabilmente il path devi passarlo assoluto e non relativo, è per questo che non ti funziona.
$zip = new ZipArchive();
$nomeZip = "archivio.zip"; // Cioè lo genero nella root
// Con un ciclo for popolo lo Zip
//...
$zip->addFile("dir/utente/files"); // archivio.zip è dentro la root, ma i file da aggiungere sono in "dir/utente"
//...
$zip->close();
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"". basename($nomeZip) ."\"");
readfile ($nomeZip);
exit();
header('Content-Type: application/zip');
header('Content-Length: ' . $size);
header('Content-Disposition: attachment; filename="File_' . $nome_utente . '.zip"');
readfile($file);
var/www/nomeprogetto/files/file.zip
, per farmi capire. Non sono più abituato ad utilizzare PHP senza un framework sotto, quindi non ricordo come si faccia "in automatico"... dai un occhio a __DIR__
, oppure cerca online. Altrimenti lo hardcodi tu (non è una buona pratica).$file = tempnam(sys_get_temp_dir(), "zip");
$zip = new \ZipArchive();
$zip->open($file, \ZipArchive::OVERWRITE);
// add files...
// close zip
header('Content-Type: application/zip');
header('Content-Length: ' . $size);
header('Content-Disposition: attachment; filename="File_' . $nome_utente . '.zip"');
readfile($file);
unlink($file);
print("<div align=\"center\">Archivio in download!<br><br><a href=\"http:IP/script.php\" target=\"_blank\">Torna indietro</a>\n");
print ("<script language=\"JavaScript\"> window.location=\"archivio.zip\";</script>");
$zip = new \ZipArchive();
$nomeZip = "archivio.zip";
// For per popolare l'archivio
$zip->addFile("file.txt");
//....
$zip->close();
$size = filesize($nomeZip);
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="File_' . $utente. '.zip"');
header('Content-Length: ' . $size);
readfile($nomeZip);
exit();
include "connessione_db.php";
//che altro non è che:
<?php
/*Connessione db*/
$host = 'IP SERVER';
$user = 'nome_utente';
$password = 'password_utente';
$database = 'NOMEDB';
$db = mysqli_connect($host, $user, $password, $database)
or die ("Attenzione: impossibile connettersi al server $host");
mysqli_select_db($db, $database)
or die ("Attenzione: impossibile connettersi al database $database");
?>
$zip = new \ZipArchive();
$nomeZip = 'nomezip.zip'; //il file viene creato nella root.
$zip->open($nomeZip, \ZipArchive::OVERWRITE);
if ($zip->open($nomeZip, ZIPARCHIVE::CREATE) !== TRUE) {
exit("impossibile creare il file zip");
}
//ciclo for per popolare lo zip...mediante
$zip->addFile("ip/anno/mese/giorno/cognome");
$zip->close();
//e poi scarico lo zip...mediante
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename=\"" . basename($nomeZip) . "\"");
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($nomeZip));
readfile($nomeZip);
unlink($nomeZip);
exit;