ben Azure web siteleri (IIS) üzerinde çalışmak ve diğer cevaplardan yöntemler kullanılarak sunucu üzerinde yeni dosyaları oluşturma ile sorun vardı bir çözüm gerekiyor. Benim için çalışan çözüm, sıkıştırma için küçük TbsZip kütüphanesini kullanmaktı; bu, sunucuda herhangi bir yere dosya yazmayı gerektirmiyordu - sadece doğrudan HTTP üzerinden döndü.
Bu iplik eski, ama bu yaklaşım biraz daha genel ve tam cevap olabilir, bu yüzden alternatif olarak kod sonrası:
// Compress all files in current directory and return via HTTP as a ZIP file
// by buli, 2013 (http://buli.waw.pl)
// requires TbsZip library from http://www.tinybutstrong.com
include_once('tbszip.php'); // load the TbsZip library
$zip = new clsTbsZip(); // instantiate the class
$zip->CreateNew(); // create a virtual new zip archive
// iterate through files, skipping directories
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.'));
foreach($objects as $name => $object)
{
$n = str_replace("/", "\\", substr($name, 2)); // path format
$zip->FileAdd($n, $n, TBSZIP_FILE); // add fileto zip archive
}
$archiveName = "backup_".date('m-d-Y H:i:s').".zip"; // name of the returned file
$zip->Flush(TBSZIP_DOWNLOAD, $archiveName); // flush the result as an HTTP download
Ve burada bütün article on my blog bu.
Garip bir sınırlama gibi görünüyor. –
Ama tamamen ortak değil, birçok ana bilgisayar sadece chjail'ing kullanıcıları yerine kullanımı tamamen engelliyor. – UnkwnTech
Doğru, ama dosya sistemi ile etkileşime girmesi PHP'nin gücü göz önüne alındığında, aptalca. –