I have solved my problem... it's pretty messy, far from ideal, and dependant on server set up, but for the sake of anyone that has a similar problem and server in future here is how I solved it.
Basically I used PHP's ZIP library which seems to be installed on the server that I'm working on and made an unzip.php file:
<?PHP
$infile = $_REQUEST['infile'];
$outfile = $_REQUEST['outfile'];
$input_folder = "uploads";
$output_folder = "templates";
echo "false";
$zip = zip_open($input_folder."/".$infile);
if ($zip) {
while ($zip_entry = zip_read($zip)) {
$fp = fopen($output_folder."/".$outfile."/".zip_entry_name($zip_entry), "w");
if (zip_entry_open($zip, $zip_entry, "r")) {
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
fwrite($fp,"$buf");
zip_entry_close($zip_entry);
fclose($fp);
} else {
echo "false";
exit;
}
}
echo "true";
zip_close($zip);
} else {
echo "false";
exit;
}
?>
Then where I wanted to call this in my ASP script I HTTPXML'd to the PHP file location on same server with my variables as part of the querystring.
Response.Buffer = True
Dim objXMLHTTP, xml
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", "http://" & strdomain & "/unzip.php?infile="& filename &"&outfile=" & out_foldername, False
xml.Send
if xml.responseText = "true" then
SaveFiles = SaveFiles & "(unzip successful!)"
else
SaveFiles = SaveFiles & "(unzip failed!)"
end if
Set xml = Nothing
next
where
filename = The name of the file that you want to unzip
out_folder = The name of the folder that you want put your unzipped files into
strdomain = Request.ServerVariables("HTTP_HOST")
SaveFiles = my return variable.
I'm sure there must be a better way of doing this, but for the time being in my situation this seems to work ok (and hopefully no one will ever know!).