PHP’de Dosyalar Nasıl Sıkıştırılır ve Sıkıştırılır

PHP'de Dosyalar Nasıl Sıkıştırılır ve Sıkıştırılır

Dosyaları internet üzerinden aktarırken sıkıştırmanın birçok avantajı vardır. Çoğu durumda, sıkıştırılmış formattaki tüm dosyaların toplam boyutu güzel bir marjla azalır. Bu, bant genişliğinizin bir kısmından tasarruf edeceğiniz ve kullanıcıların daha hızlı indirme hızları elde edeceği anlamına gelir. Kullanıcılar bir dosyayı indirdikten sonra, istedikleri zaman sıkıştırmayı açabilirler. Kısacası, sıkıştırma, dosyaların internet üzerinden sunulmasını hem sizin hem de ziyaretçileriniz için çok daha kolay hale getirebilir.

Sizi dosyaları sıkıştırmaktan vazgeçirebilecek veya işlemi çok yorucu hale getirebilecek bir faktör, bunu manuel olarak yapıyor olmanızdır. Neyse ki PHP, özellikle dosya sıkıştırma ve çıkarma ile ilgilenen birçok uzantıyla birlikte gelir. PHP’de dosyaları otomatik olarak sıkıştırmak için bu uzantılarda bulunan işlevleri kullanabilirsiniz.

Bu eğitim size PHP’deki bir zip arşivinden dosyaları nasıl sıkıştıracağınızı ve açacağınızı (sıkıştırıp çıkaracağınızı) öğretecektir. Ayrıca bir arşivdeki dosyaları çıkarmadan nasıl sileceğinizi veya yeniden adlandıracağınızı da öğreneceksiniz.

PHP’de Dosyaları Sıkıştırmak

PHP ZipArchive class, tüm dosyalarınızı sıkıştırmanıza ve açmanıza yardımcı olabilecek birçok özellik ve yönteme sahiptir.

Bireysel Dosyaları Sıkıştır

Dosyaları zip arşivinize birer birer ekleyebilir veya tüm dizini bir kerede ekleyebilirsiniz. Her iki durumda da, ilk adım yeni bir ZipArchive örnek ve ardından arama open($filename, [$flags]) yöntem. Bu yöntem, okuma, yazma veya diğer değişiklikler için yeni bir zip arşivi açacaktır. İsteğe bağlı için dört geçerli değer vardır $flag farklı durumların nasıl ele alınacağını belirleyen parametre.

  • ZipArchive::OVERWRITE—Bu bayrak, zaten mevcutsa, belirtilen arşivdeki içeriğin üzerine yazacaktır.
  • ZipArchive::CREATE—Bu bayrak, halihazırda mevcut değilse yeni bir arşiv oluşturacaktır.
  • ZipArchive::EXCL—Arşiv zaten mevcutsa, bu bayrak bir hataya neden olur.
  • ZipArchive::CHECKCONS—Bu işaret, PHP’ye arşiv üzerinde ek tutarlılık kontrolleri yapmasını ve başarısız olursa bir hata vermesini söyler.

kontrol edebilirsiniz Bu yöntemin dokümantasyonu Dosyanın açılamaması durumunda döndürülen farklı hata kodlarını öğrenmek için. Zip dosyası başarıyla açıldıysa veya oluşturulduysa, yöntem geri dönecektir. true.

Arşivi başarıyla açtıktan sonra, addFile($filename, $localname, $start, $length) Belirli bir yoldan herhangi bir dosyayı arşivinize ekleme yöntemi. bu $filename parametre, arşive eklemek istediğiniz dosyanın yoludur. bu $localname parametre, dosyaya arşiv içinde saklamak üzere bir isim atamak için kullanılır. Arayabilirsin addFile() arşivinize her yeni dosya eklemek istediğinizde.

Gerekli tüm dosyaları arşive ekledikten sonra, aramanız yeterlidir. close() kapatma ve değişiklikleri kaydetme yöntemi.

Diyelim ki, kullanıcıların farklı yazı tipleri için yazı tipi dosyalarını ve bunları kullanmak için lisans bilgilerini indirmelerine izin veren bir web siteniz olduğunu varsayalım. Bunun gibi dosyalar, PHP kullanılarak otomatik arşivlemenin mükemmel örnekleri olacaktır. Aşağıdaki kod, tam olarak bunu nasıl yapacağınızı gösterir.

oluşturarak başlıyoruz. ZipArchive örneğini kullanın ve ardından open() arşivimizi oluşturma yöntemi. bu addFile() yöntem bizim gerçek ekler .ttf yazı tipi dosyası ve .Txt lisans dosyasını arşive atın.

Orijinal dosyaların içinde olduğuna dikkat etmelisiniz. yazı tipleri/Monoton dizin. Ancak, PHP kodu onu doğrudan arşivimizin kök dizinine yerleştirir. Arşive giren dosyaların adlarının yanı sıra dizin yapısını da değiştirebilirsiniz.

Bir Dizinden Birden Çok Dosyayı Sıkıştırmak

Arşivinize tek tek dosyalar eklemek bir süre sonra yorucu olabilir. Örneğin, hepsinin bir arşivini oluşturmak isteyebilirsiniz. .pdf veya .png bir dizindeki dosyalar. bu addGlob($pattern, $flags, $options) yöntem bu durumda çok yardımcı olacaktır. Bu yöntemin tek dezavantajı, arşivdeki tek tek dosyaların konumu üzerindeki kontrolünüzü kaybetmenizdir. Bununla birlikte, arşivin içindeki dizin yapısını yine de aşağıdakileri kullanarak etkileyebilirsiniz: $options parametre. Seçenekler, bir ilişkisel dizi biçiminde iletilir.

  • add_path—Atadığınız değer add_path arşiv içindeki dosyanın yerel yolunun önüne eklenir.
  • remove_path—Atadığınız değer remove_path arşive eklenen farklı dosyaların yolundan eşleşen bir öneki kaldırmak için kullanılır.
  • remove_all_path—Değerinin ayarlanması remove_all_path ile true adının yanı sıra dosyanın yolundan her şeyi kaldıracaktır. Bu durumda dosyalar arşivin kök dizinine eklenir.

Bir yolun kaldırılmasının, içinde belirtilen değerin önüne eklenmeden önce yapıldığını hatırlamak önemlidir. add_path.

Aşağıdaki kod parçacığını kullanacak addGlob() ve tüm bu seçenekler daha net.

Her zamanki gibi, bir ZipArchive örneğini kullanın ve ardından open() arşivimizi oluşturma yöntemi. için farklı değerler de belirtiyoruz. add_path anahtar $options aramadan önce her seferinde dizi addGlob() yöntem. Bu şekilde, bir seferde belirli bir dosya grubuyla ilgilenebilir ve buna göre arşivleme seçenekleri sağlayabiliriz.

İlk durumda, hepsini yineliyoruz .jpg içindeki dosyalar ışıklar dizine yerleştirin ve light_wallpapers arşivdeki dizin. Benzer şekilde, tüm üzerinde yineleniriz .ttf içindeki dosyalar belgeler dizini ve ardından bunları adlı bir klasörün içine koyun. font_files arşivimizde. Son olarak, tüm öğeleri yineliyoruz .jpg ve .png dosyalarımızdaki dosyaları bir kerede bir araya getirin ve hepsini bir araya getirin. Görüntüler dizin.

Görüldüğü gibi değerler $options parametresi arşiv içindeki içeriği düzenlemede yararlıdır.

Bir Arşivden İçerik Çıkarma

bu ZipArchive sınıfın adı verilen bir yöntemi var extractTo($destination, $entries) Bir arşivin içeriğini çıkarmak için. Arşivdeki her şeyi veya yalnızca belirli dosyaları çıkarmak için kullanabilirsiniz. bu $entries parametresi, ayıklanacak tek bir dosya adını belirtmek için kullanılabilir veya bir dizi dosyayı iletmek için kullanabilirsiniz.

Unutulmaması gereken önemli bir nokta, dosyayı çıkarmak için arşivin içindeki dosyanın doğru yolunu belirtmeniz gerektiğidir. Örneğin, adlı bir yazı tipi dosyasını arşivledik. AlegreyaSans-Light.ttf önceki bölümde. Dosya, arşivde adı verilen bir dizinde saklandı. font_files. Bu, içinde belirtmeniz gereken yolun $entries parametre font_files/AlegreyaSans-Light.ttf ve basitçe değil AlegreyaSans-Light.ttf.

Dizin ve dosya yapısı çıkarma işlemi sırasında korunacak ve dosyalar kendi dizinlerine ayıklanacaktır.

İkinci parametreyi atlarsanız, yöntem arşivdeki tüm dosyaları çıkaracaktır.

Arşivler Üzerinde Daha Fazla Kontrol Edin

bu ZipArchive class ayrıca, tüm içeriğini çıkarmadan önce arşiv hakkında daha fazla bilgi edinmenize yardımcı olacak birçok başka yöntem ve özelliğe sahiptir.

kullanarak bir arşivdeki dosya sayısını sayabilirsiniz. count() yöntem. Diğer bir seçenek ise, numFiles Emlak. Arşivdeki tüm dosyalar üzerinde yineleme yapmak ve yalnızca ihtiyacınız olanları çıkarmak için kullanılabilirler veya onlarla arşivden kaldırmak gibi başka bir şey yapabilirsiniz.

Aşağıdaki örnekte, arşivdeki kelimeyi içeren tüm dosyaları siliyoruz. İtalik. Belirli bir kelime içermeyen tüm dosyaları silmek için benzer kod kullanılabilir. Ayrıca bu dosyalar üzerinde yineleme yapabilir ve belirli bir kelimeyi başka bir kelimeyle değiştirebilirsiniz.

Yukarıdaki kodda kullandığımız deleteName() Tek bir dosyayı silmek için Ancak, tüm bir dizini silmek için de kullanabilirsiniz.

Benzer bir işlev renameName($oldname, $newname) arşivdeki herhangi bir dosyanın adını değiştirmek için kullanılabilir. başlıklı bir dosya varsa bir hata alırsınız. $newname zaten var.

Son düşünceler

Bir çok yararlı yöntemi ele aldık. ZipArchive PHP’de dosyaların otomatik olarak sıkıştırılmasını ve çıkarılmasını çok kolaylaştıracak bir sınıf. Artık kendi kriterlerinize göre tek tek dosyaları veya bir grup dosyayı aynı anda sıkıştırabilmeniz gerekir. Benzer şekilde, diğer içeriği etkilemeden herhangi bir dosyayı arşivden çıkarabilmelisiniz.

Yardımıyla count() ve numFiles, tek tek dosyalar üzerinde daha fazla kontrol sahibi olacaksınız ve onları yeniden adlandırmak veya silmek çok kolay olacaktır. içinden geçmelisin belgeler en az bir kez daha bu tür işlevler hakkında okumak için.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.