Wie Zip und Entpacken von Dateien in CodeIgniter

[pg_quiz id='1']

Die erste Hälfte dieses tutorial erklärt verschiedene Möglichkeiten, wie Sie können eine zip-Datei erstellen mit built-in CodeIgniter-APIs. Wir werden sehen, wie das erstellen und speichern von zip-Dateien auf dem server und wie kann Sie…
wie kann ich eine Datei entpacken

Die erste Hälfte dieses tutorial erklärt verschiedene Möglichkeiten, wie Sie können eine zip-Datei erstellen mit built-in CodeIgniter-APIs. Wir werden sehen, wie das erstellen und speichern von zip-Dateien auf dem server und wie kann Sie dann zum download zur Verfügung-end-Anwender als auch.

Die zweite Hälfte enthält eine Diskussion, wie können Sie entpacken Sie die Datei. Um zu demonstrieren, erstellen wir eine benutzerdefinierte Seite, die ermöglicht Benutzern das hochladen von zip-Dateien, die extrahiert werden sollen auf dem server nach dem erfolgreichen hochladen der Datei. Zum erreichen der gewünschten Funktionalität, die ZipArchive PHP-Erweiterung kommt zu unserer Rettung!

Bevor wir weiter gehen, und tatsächlich Tauchen Sie ein in die Entwicklung der Dinge, ich werde eine Liste der Dateien, die wir entwickeln, die im Laufe dieses Tutorials:

  • application/controllers/Zip.php : Es ist eine controller-Datei, die veranschaulicht verschiedene Möglichkeiten, wie Sie könnte eine zip-Datei erstellen.
  • application/controllers/Unzip.php : Es ist eine controller-Datei, die enthält den code, der verwendet wird, um Dekomprimieren Sie eine user-Datei hochgeladen.
  • application/views/file_upload_form.php : Es ist eine Ansicht, die Datei, die hält ziemlich grundlegende HTML-Datei-upload-Formular-code.
  • application/views/file_upload_result.php : Es ist eine Ansicht, Datei, zeigt das Ergebnis einer vom Benutzer hochgeladenen Datei; im Grunde sagt es aus, ob die Datei wurde erfolgreich entpackt.
  • application/libraries/Extractor.php : Diese Datei zeigt das Konzept einer benutzerdefinierten Bibliothek in CodeIgniter.

Mit alles im Ort, wir sind bereit, zu unserer nächsten Abschnitt!

Wie Zip-Dateien?

Gehen Sie voran und erstellen Sie eine Datei application/controllers/Zip.php mit dem folgenden Inhalt.

Es ist ein ziemlich standard-controller-Datei, die Sie bereits vertraut sind. Es hält mehrere Methoden, und jeder von Ihnen zeigt Ihnen einen anderen Weg, um eine zip-Datei erstellen.

Abgesehen davon, es bietet zwei private Methoden, _load_zip_lib und _archieve_and_download , die aufgerufen werden, von den restlichen Methoden. Natürlich Sie nicht brauchen, um diese Methoden implementieren, aber wir haben gerade umgestalteten unseren code so, dass Sie nicht am Ende wiederholen Sie den gleichen code in andere Methoden. Als erstes gehen wir durch diese zwei Methoden.

Hier ist, was die Methode _load_zip_lib aussieht.

Es lädt den integrierten zip-library von CodeIgniter framework, so dass Sie die features verwenden, die der Bibliothek den ganzen rest des Codes. Jetzt können Sie den Zugriff auf die zip-Bibliothek mit dem $this->zip-Konvention.

Als Nächstes gibt es die _archieve_and_download Methode.

Als wir geladen haben, die zip-Bibliothek, können Sie verwenden Sie die bereitgestellten Methoden. Die Archiv-Methode ermöglicht Ihnen das erstellen einer zip-Datei im Pfad als erstes argument. Auf der anderen Seite, die download-Methode fordert den Benutzer für die Datei herunterladen.

Keine Sorge, wenn Sie Fragen über den Inhalt unserer zip-Datei, wie wir sehen werden, in einem Augenblick.

Alles ist an Ort und Stelle, so sind wir bereit zu Rollen!

Let ‘ s greifen auf den code der data-Methode. Diese Methode zeigt Ihnen, wie Sie Dateien erstellen, die auf die Fliegen und wickeln Sie Sie in eine zip-Datei.

Um mit anzufangen, wir haben genannt die _load_zip_lib-Methode, lädt die zip-Bibliothek. Als Nächstes haben wir die add_data Methode der zip-Klasse, die Ihnen erlaubt, eine Datei zu erstellen und füllen Sie es mit Inhalt zur gleichen Zeit! Natürlich, es ist zu dem Archiv Hinzugefügt!

Das erste argument sollte der name der Datei und das zweite argument enthält den Inhalt, gehen Sie in die Datei.

Wie Sie sehen können, haben wir zwei Dateien, name.txt und profile.txt mit einigen demo-Inhalten. Schließlich rufen wir _archieve_and_download mit my_info.zip als argument der Methode. Was tut es?

  • Es wird eine zip-Datei erstellen my_info.zip unter deinen uploads-Verzeichnis.
  • Es werde auch die Aufforderung einen Benutzer für die Datei herunterladen, und der name, unter dem die Datei gespeichert ist my_info.zip .

So stellen Sie sicher, dass Sie ‘ ve erstellt einen uploads-Verzeichnis in der Wurzel Ihrer Website. Auch, machen es beschreibbar durch den Webserver Benutzer. Nun, gehen Sie vor und führen Sie “http://my-codeingiter-site/zip/data” die Dinge zu sehen in Aktion!

Wenn Sie irgendwelche Probleme haben, können Sie mich Fragen, in die Kommentare!

Als Nächstes gibt es die data_array Methode.

Diese Methode ist identisch mit der Letzte, den wir gerade besprochen haben, außer, wir haben ein array von Dateien zu den add_data-Methode anstelle der einzelnen Dateien!

Nun schnappen Sie sich den code der data_with_subdirs Methode.

Nur für den Fall Sie möchten, organisieren Sie Ihre Dateien in bestimmte Verzeichnisse, die add_data Methode ermöglicht es Ihnen, erstellen Sie Sie als gut. Die Ausgabe der oben genannten Methode wird es nicht anders sein, außer dass die name.txt und profile.txt Dateien im info-Verzeichnis.

Obwohl die add_data Methode stellt ein nettes feature, das ermöglicht Ihnen das erstellen von Dateien on-the-fly, mehr als oft nicht, werden Sie brauchen, um zip vorhandenen Dateien auf dem server. Aber das ist genau das Thema unseres nächsten paar Methoden.

Lassen Sie uns schnell schauen, was unsere nächsten-Dateien-Methode aussieht. Es werde erstellen Sie eine zip-Dateien im uploads-Verzeichnis.

Der Zweck der read_file Methode ist zu Lesen, die vorhandene Datei auf dem server, und fügen Sie es in das Archiv. Wie Sie also sehen können, haben wir die beiden Dateien 1.jpg und 2.jpg auf das Archiv. Natürlich, diese beiden Dateien müssen vorhanden sein, unter dem uploads Verzeichnis in der Wurzel Ihrer Website.

Wenn Sie TRUE übergeben, als zweites argument der read_file Methode, die resultierende zip-Datei erhält die exakte Verzeichnis-Struktur die Datei abgelegt wurde.

Die Letzte Methode, die in diesem segment ist der dir-Methode. Es werde erstellen Sie ein zip-Archiv des kompletten Verzeichnisses.

Sie können die read_dir Methode, wenn Sie möchten, erstellen Sie ein zip-Archiv des gesamten directory anstelle von bestimmten Dateien. In unserem Beispiel oben, es werde ein dir_images.zip Datei, die alle Dateien enthält, die unter /uploads/images/ – Verzeichnis.

Die wichtige Sache zu beachten ist hier, dass die gesamte Verzeichnisstruktur erhalten wird standardmäßig in der zip-Datei. Aber, wenn Sie Sie ignorieren wollen, übergeben Sie als zweites argument FALSE die read_dir Methode. In diesem Fall, werde es nur schaffen, ein images-Verzeichnis in der zip-Datei.

Damit endet unsere Geschichte so erstellen Sie ein zip-Archiv mit verschiedenen Methoden bereitgestellt, die von den eingebauten zip-Klasse.

Wie Sie Dateien Entpacken?

Leider gibt es keine built-in CodeIgniter-library, die es uns ermöglicht, entpacken Sie das zip-Archiv. Aber die ZipArchive PHP-Erweiterung macht es zu einem Kinderspiel, wie wir in einem moment sehen werden.

Wir erstellen ein ziemlich einfaches Beispiel, das veranschaulicht das entpacken vom Benutzer hochgeladenen Dateien.

Gehen Sie voran und erstellen Sie eine Datei application/controllers/Unzip.php mit dem folgenden Inhalt.

Lassen Sie uns auch unsere anzeigen-Vorlagen, und dann werden wir sehen, wie es funktioniert, ganz.

Erstellen Sie ein view-template-Datei application/views/file_upload_form.php mit dem folgenden Inhalt.

Es erstellt eine einfache Datei-upload-Formular, so dass der Benutzer kann laden Sie die zip-Datei! Bitte beachten Sie, dass ich gehalten habe, es auf ein minimum aus Gründen der Einfachheit.

Als Nächstes erstellen wir ein view-template-Datei application/views/file_upload_result.php .

Sobald die Datei hochgeladen und entpackt wurde, wird der Benutzer angezeigt, die oben genannten Vorlage.

Kommen wir nun zurück zu unserem controller und gehen Sie durch jede Methode.

Im Konstruktor der controller, den wir geladen haben, die gebaut-in form und url CodeIgniter Helfer, so dass wir verwenden können, helper-Funktionen wie form_open_multipart , site_url und dergleichen.

Als Nächstes werfen wir einen Blick auf die index-Methode.

Kommt diese müssen eine Erklärung? Es ruft die Ansicht file_upload_form und rendert die Seite. Also, wenn Sie Zugang http://my-codeingiter-site/unzip es muss einen einfachen Datei-upload-Formular, wie unten gezeigt.

Beachten Sie auch, dass die Aktion unserer form ist entpacken/hochladen, wo die Daten veröffentlicht werden. Wir haben die form_open_multipart helper zum generieren der multipart form-tag!

Als Nächstes benötigen wir implementieren die action-Methode upload, um die Datei hochladen und Extraktion Zeug. Schnappen Sie sich den code, der von der Unzip.php controller.

Wenn Sie vertraut sind mit dem hochladen der Datei in CodeIgniter, der code sollte sich nicht Fremd. Für diejenigen, die nicht vertraut sind, gibt es nichts zu befürchten, da die integrierte upload-APIs in CodeIgniter machen es zu einem Kinderspiel.

Der folgende code lädt die upload-Bibliothek mit einigen anfänglichen Konfiguration zur Verfügung gestellt von den $config-array variable.

Wir es konfiguriert haben, so dass die hochgeladene Datei wird unter den uploads-Verzeichnis im Stammverzeichnis der Anwendung und die Benutzer dürfen nur hochladen von zip-Dateien.

Als Nächstes haben wir überprüft, ob der Datei-upload fehlgeschlagen ist, und wenn das ist Fall, wir Holen uns eine hilfreiche Fehlermeldung und zuweisen $params, so dass wir das können, zeigen Sie es in der Vorlage.

In dem Fall, das die Datei erfolgreich hochgeladen wird, so dass der nächste Schritt ist die Datei-Pfad der hochgeladenen Datei.

Endlich, wir instanziieren ein ZipArchive-Objekt, öffne unsere zip-Datei und extrahieren Sie es in das uploads-Verzeichnis.

War das nicht einfach?

Das einzige, was noch übrig bleibt, ist der Aufruf der file_upload_result view, und hier ist, was es Aussehen sollte!

Also, das ist der andere Teil der Geschichte!

Überarbeiten Sie den Entpackten Code in eine Bibliothek

Würden Sie bemerkt haben, dass die upload-Methode enthält die ZipArchive-code, extrahiert die Datei hochgeladen. Was, wenn Sie brauchen, um zu verwenden, dass code an mehreren stellen? Sie könnten versucht sein, zu kopieren und fügen Sie den code wie erforderlich.

In der Tat, es gibt einen besseren Weg in die CodeIgniter ermöglicht Ihnen die Zentralisierung von code, der verwendet werden kann in der gesamten Anwendung. Sie können eine benutzerdefinierte Bibliothek.

Gehen Sie voran und erstellen Sie eine Datei application/libraries/Extractor.php mit dem folgenden Inhalt.

Nun, gehen Sie vor und ersetzen Sie die upload-Methode in Ihren Unzip.php controller mit den folgenden ein.

Wie Sie sehen können, die wir geladen haben, unsere benutzerdefinierten Bibliothek und benutzte es, um den Inhalt zu extrahieren!

Ziemlich cool, nicht wahr?

Und ja, das ist das Ende von diesem Artikel.

Fazit

Ich hoffe, dass Sie diesen Artikel genossen haben, in denen wir begannen die Erkundung der core zip-library von CodeIgniter framework und verschiedene Möglichkeiten, wie Sie können, erstellen Sie ein zip-Archiv. Im zweiten Teil habe ich erklärt, wie Sie entpacken können vom Benutzer hochgeladenen Dateien mit der ZipArchive PHP-Erweiterung.

In den Prozess, wir haben auch eine chance, zu konvertieren, die unseren code, um benutzerdefinierte CodeIgniter-library, und das ist etwas, was von einer Kirsche auf die Oberseite, würde ich sagen!

Lassen Sie mich wissen, wenn Sie kommen mit Fragen und Anregungen, die Sie Schießen könnte mit dem Futter unter.

Leave a Reply

Your email address will not be published. Required fields are marked *