per php c'è un'estensione che si chiama Zip e ti permette di gestire i file zip con estrema comodità
qui la pagina di riferimento
http://www.php.net/zip
Prima apri il file zip
http://www.php.net/manual/en/functio...chive-open.php
Poi cicli i nomi dei file (c'è l'esempio che fa quello che ti serve)
http://www.php.net/manual/en/functio...tnameindex.php
Invece, per prendere il contenuto partendo dal nome del file
http://www.php.net/manual/en/functio...etfromname.php
Se devi fare un'integrazione ti consiglio di giocare con json perché cosi fai tutto via javascript e non hai bisogno di fare nessun'integrazione con ASP (che sarebbe anche abbastanza complicato)
Utilizzando jQuery fai una richieste json alla pagina in php che ti restituisce un'elenco di variabili in formato json
www.php.net/json_encode
Json è praticamente codice javascript, ne più ne meno
Per inviare il file poi
www.php.net/header
www.php.net/fopen
www.php.net/fpassthru
www.php.net/fclose
Ovviamente i parametri li mandi via get, ed in questo caso sono zip, con il percorso al file zip relativo al file php, ed image, con il percorso/nome del file immagine dentro il file zip
lo script non l'ho minimamente provato quindi possono esserci sia errori di sintassi sia errori logici, inoltre attualmente non viene effettuato nessun controllo sul percorso, a parte l'eventuale esistenza, quindi è MOLTO insicuro ... quello va ASSOLUTAMENTE aggiuntoCodice PHP:<?php
if (isset($_GET['zip']) === true)
{
// Verifica se il file esiste
if (file_exists($_GET['image']) === false)
{
die('File doesn\'t exists ' . $_GET['image']);
}
// Verifica se è stata richiesta l'immagine
if (isset($_GET['image']) === false)
{
// Prova ad aprire il file zip
$zip = new ZipArchive();
if (!$zip->open($_GET['zip']))
{
die('Unable to open ' . $_GET['zip']);
}
// Costruisce l'elenco dei file
$files = array();
for($i = 0; $i < $zip->numFiles; $i++)
{
$files[] = $zip->getNameIndex($i);
}
// Invia l'header content-type al browser e l'elenco dei file
header('Content-type: application/json');
echo json_encode($files);
}
else
{
// Acquisisce l'estensione e decide quale header inviare
$extension = strtolower(array_pop(explode('.', $_GET['image'])));
switch($extension)
{
case 'gif':
header('Content-type: image/gif');
break;
case 'jpg':
case 'jpeg':
header('Content-type: image/jpeg');
break;
case 'png':
header('Content-type: image/png');
break;
default:
die('Unsupported file format');
break;
}
// Acquisisce il puntatore al contenuto del file nel file zip
if (($fp = fopen('zip://' . $_GET['zip'] . '#' . $_GET['image'], 'r')) === false)
{
die('Unable to open zip or image file');
}
// Invia progressivamente il contenuto del file zip al browser
fpassthru($fp);
fclose($fp);
}
}
?>![]()


Rispondi quotando