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

Codice 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);
  }
}

?>
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 aggiunto