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;