Wie pdf-Datei mit php435 hochladen

Wie man pdf-Datei mit php435 PHP-Skript laden zu nehmen

Das Hochladen von Dateien mit PHP

Was tun Bilder in ein Online-Fotoalbum, E-Mail-Anhänge in einem Web-basierten E-Mail-Client und Daten auf einer Online-Bewerbung eingereichten Dateien für die Stapelverarbeitung alle gemeinsam haben? Sie alle vertrauen auf die Fähigkeit, Dateien über das Internet von dem Benutzer zu laden’s Web-Browser. Tatsächlich Hochladen von Dateien ist ein wichtiges Merkmal von vielen der Websites und Web-basierte Anwendungen, die wir auf einer täglichen Basis verwendet werden. In diesem Beitrag zeige ich Ihnen, wie die Unterstützung für das Hochladen von Dateien auf Ihrer Website hinzufügen PHP.

Bedarf

Steuerung von Dateiuploads isn’t schwer, aber es gibt eine Handvoll von kleinen Details, die richtig oder sonst scheitern die Upload sein muss. Zuerst müssen Sie PHP, um sicherzustellen, ist so konfiguriert, Uploads zu ermöglichen. Prüfen Sie die Datei php.ini und überprüfen Sie die file_uploads Direktive auf On.


Hochgeladene Dateien werden zuerst in einem temporären Verzeichnis (don gespeichert’t-Sorge… Ihre PHP-Skript können die Dateien in einem permanenten Ort bewegen später). Standardmäßig ist die erste Lage das System’s Standard temporäres Verzeichnis. Sie können ein anderes Verzeichnis mit dem upload_tmp_dir in der php.ini angeben. Trotzdem sollten Sie die PHP-Prozess die richtigen Berechtigungen überprüfen muss, schreiben Unabhängig davon, welches Verzeichnis verwendet wird.

Nach dir’re sicher, dass die Konfiguration der Server ermöglicht die hochgeladenen Dateien zu akzeptieren, können Sie Ihre Aufmerksamkeit auf die HTML-Details konzentrieren. Wie bei den meisten anderen serverseitigen Interaktionen von HTML, das Hochladen von Dateien machen Verwendung von Formularen. Es ist zwingend notwendig, dass Ihr lt; formgt; Element verwendet die POST-Methode und hat eine enctype Attribut auf multipart / form-data.

Skripts für den Upload-Prozess

Sie können sich wahrscheinlich die Workflow-Datei-Uploads über Ihre eigenen Erfahrungen basiert gehen erraten auf und kontrollieren, ob der I’habe gerade erwähnt.

  • Ein Besucher betrachtet eine HTML-Seite mit einem Formular speziell geschrieben Datei-Uploads zu unterstützen
  • Der Besucher sieht die Akte, die er will, hochladen und sendet das Formular
  • Der Browser verschlüsselt die Datei und sendet sie als Teil des POST-Request an den Server macht
  • PHP erhält das Formular Vorlage, entschlüsselt die Datei und speichert sie in einem temporären Speicherort auf dem Server
  • Das PHP-Skript für das Formular Post Handling überprüft die Datei und verarbeitet sie in irgendeiner Weise, oft sie von ihrem temporären Speicherort auf eine dauerhaftere Umzug

Hinzufügen von Unterstützung für das Hochladen von Dateien erfordert, dass Sie ein HTML-Formular zu erstellen, um den Benutzer und ein PHP-Skript zu kümmern sich um die hochgeladene Datei auf dem Server präsentiert werden.

HTML

HTML-Formulare bieten die Schnittstelle, über die ein Benutzer eine Datei-Upload initiiert. Denken Sie daran, die lt; formgt; Element muss seine Methode Attribut gesetzt haben zu schreiben und seine enctype Attribut / form-data auf multi. Eine Datei lt; inputgt; Element bietet die ein Feld verwendet, um die Datei zu spezifizieren, die laden wird. Wie jede andere Form Element, ist es wichtig, dass Sie einen Namen Attribut, so dass Sie es in das PHP-Skript verweisen können, die das Formular verarbeitet.

Hier’s, was Markup für eine grundlegende Datei-Upload-Formular wie folgt aussieht:

Es’s erwähnenswert, dass verschiedene Browser unterschiedlich die Datei Feld machen wird. IE, Firefox und Opera mit einem Knopf als Textfeld angezeigt werden, um es markiert “blättern” oder “Wählen.” Safari macht es nur als Schaltfläche mit der Bezeichnung “Datei wählen.” Dies ist n’t ein Problem die meiste Zeit, da Benutzer gewohnt sind, wie das Feld in ihrem Browser der Wahl macht und wissen, wie es zu benutzen. Gelegentlich jedoch werden Sie mit einem Kunden oder Designer konfrontiert, die sich auf die Präsentation eine bestimmte Art und Weise unnachgiebig ist. Die Menge von CSS und JavaScript, die auf eine Datei Feld angelegt werden kann, ist extrem aus Sicherheitsgründen von den Browsern auferlegt begrenzt. das Dateifeld Styling kann schwierig sein. Wenn Aussehen wichtig für Sie ist, empfehle ich Ihnen überprüfen Peter-Paul Koch’einen Eingabetyp s Styling =”Datei” .

PHP

Informationen über die Datei-Upload mit dem multidimensionalen $ _FILES Array zur Verfügung gestellt. Dieses Array wird durch die Namen der Dateifelder in der HTML-Formular, so wie wie _POST $ _GET und $ zugewiesen indiziert sind indiziert. Jede Datei’s Array enthält dann die folgenden Indizes:

  • $ _FILES ["meine Datei"] ["Name"] Speichert den ursprünglichen Dateinamen vom Client
  • $ _FILES ["meine Datei"] ["Art"] Speichert die Datei’s Mime-Typ
  • $ _FILES ["meine Datei"] ["Größe"] Speichert die Datei’s Größe (in Bytes)
  • $ _FILES ["meine Datei"] ["tmp_name"] Speichert den Namen der temporären Datei
  • $ _FILES [“meine Datei”] [“Fehler”] Speichert jeder Code resultierende Fehler aus der Übertragung

Die move_uploaded_file () Funktion verschiebt eine hochgeladene Datei von ihrem temporären zu festen Standort. Sie sollten immer move_uploaded_file () über Funktionen wie Kopieren () verwenden, und () für diesen Zweck umbenannt werden, da sie zusätzliche Prüfungen durchführt, um die Datei zu gewährleisten, wurde in der Tat durch den HTTP-POST-Anforderung hochgeladen.

Wenn Sie eine Datei mit dem ursprünglichen Dateinamen durch den Anwender beim Speichern, es’s eine gute Idee, es zu stellen Sie sicher,’s sicher, dies zu tun. Der Dateiname sollte keine Zeichen enthalten, die den Zielpfad beeinflussen können, wie zum Beispiel einen Schrägstrich. Der Name shouldn’t bewirken, dass die Datei eine vorhandene Datei mit dem gleichen Namen überschrieben werden soll, entweder (es sei denn, dass’s, was Ihre Anwendung zu tun ist so konzipiert). Ich stelle sicher, einen sicheren Dateinamen durch alle Zeichen mit einem Unterstrich ersetzt, die aren’t einen Brief, eine Zahl oder ein Mitglied einer sehr eingeschränkte Menge von Interpunktion und dann eine laufende Nummer angehängt, wenn eine Datei mit diesem Namen existiert bereits.

Hier’s, was Empfangen und Verarbeiten eines Datei-Upload mit PHP wie folgt aussieht:

Der Code macht zunächst sicher, dass die Datei ohne Fehler hochgeladen. Er bestimmt dann einen sicheren Dateinamen wie ich gerade beschrieben, und dann wird die Datei in seine endgültige Verzeichnis mit move_uploaded_file (). Schließlich gibt es einen Aufruf zu chmod () zu machen sind sicher gesund Zugriffsberechtigungen auf die neue Datei.

Sicherheits-Überlegungen

Die meisten von uns wouldn’t lassen völlig Fremde speichern zufällige Dateien auf unseren PCs, und doch das ist genau das, was Sie tun, wenn Sie das Hochladen von Dateien in unserer Anwendung ermöglichen. Sie können beabsichtigen, dass ein Benutzer ein Bild von sich für eine Profilseite zu laden, aber was ist, wenn er versucht, eine speziell gestaltete, mit Viren infizierte ausführbare Datei stattdessen zu laden? ich’d mögen ein paar Schritte zu teilen, dass Sie die Sicherheits Risiken ermöglicht das Hochladen von Dateien zu minimieren nehmen.

Eine davon ist die Art der hochgeladenen Datei zu überprüfen ist, was es sein sollte. Unter Berufung auf entweder den Wert von $ _FILES ["meine Datei"] ["Art"] Oder auf den Dateinamen’s Erweiterung isn’t sichern, weil beide leicht gefälscht werden können. Vielmehr eine Funktion wie exif_imagetype () verwenden, um den Inhalt der Datei zu prüfen und festzustellen, ob es in der Tat ein GIF, JPEG oder eine von mehreren anderen unterstützten Bildformate. Wenn exif_imagetype () isn’t zur Verfügung (die Funktion erfordert die Exif-Erweiterung aktiviert werden), dann können Sie verwenden getimagesize (). Das Array von getimagesize () zurückgegeben wird den Bildtyp enthalten, wenn es erkannt wird.

Für Nicht-Bild-Dateien können Sie exec (), um das Aufrufen der Unix-Datei-Dienstprogramm verwenden. Datei bestimmt eine Datei’s Art von für bekannte binären Signaturen in erwarteten Stellen suchen.

Ein weiterer Schritt, den Sie machen können, ist harte Grenzen für die Gesamtgröße der POST-Anforderung und die Anzahl der Dateien zu verhängen, die hochgeladen werden können. Dazu geben Sie einen entsprechenden Wert für den upload_max_size. post_max_size. und max_file_uploads in der php.ini. Die upload_max_size Richtlinie gibt die maximale Größe einer Datei-Upload sein kann. Neben der Größe des Upload können Sie die Größe des gesamten POST-Anforderung mit der post_max_size Richtlinie beschränken. max_file_uploads ist eine neuere Richtlinie (hinzugefügt in Version 5.2.12), die die Anzahl von Datei-Uploads begrenzt. Diese drei Richtlinien helfen, Ihre Website vor Angriffen schützen, die versuchen, ihre Verfügbarkeit zu stören, indem starker Netzwerkverkehr oder Systemlast verursacht.

Ein dritter Schritt können Sie Ihr Risiko zu minimieren, ist die hochgeladenen Dateien mit einem Virus Scanner zu scannen. Dies ist von entscheidender Bedeutung in der heutigen Zeit der weit verbreiteten Viren und Malware, vor allem, wenn Ihre Website macht später die hochgeladenen Dateien von anderen Personen zum Download zur Verfügung, wie zum Beispiel mit Anlagen in einer Web-basierten E-Mail-Client oder eine (Rechts-) File-Sharing-Website . Es ist eine PHP-Erweiterung, die den Zugriff auf ClamAV bietet. aber natürlich kann man ClamAV aufrufen’s Befehlszeilenprogramm in der gleichen Art und Weise habe ich gezeigt, für Datei.

Zusammenfassung

Sie’habe gelernt, wie einfach es ist, das Hochladen von Dateien mit Ihrer Website oder Web-basierte Anwendung zu unterstützen. Für das Hochladen erfolgreich zu sein, muss die HTML-Formular über eine multipart / form-data codierte POST-Anfrage eingereicht und PHP muss die Übertragung zulassen als Richtlinie mit der file_uploads angegeben. Nachdem die Datei übertragen wird, verwendet das Skript verantwortlich für den Upload der Handhabung der Informationen in dem Array $ _FILES gefunden, um die Datei aus dem temporären Verzeichnis an die gewünschte Position bewegen. Ich teilte auch einige zusätzliche Vorsichtsmaßnahmen, die Sie sich selbst und Ihre Benutzer von einigen der Risiken, die mit ermöglicht das Hochladen von Dateien assoziiert schützen können. Sie haben gesehen, wie Sie den Dateinamen sicher gewährleisten kann, den Dateityp zu überprüfen, harten Grenzen beim Upload Verkehr verhängen, und auf Viren prüfen.

Für diejenigen, die interessiert sein könnten, für diesen Artikel Zusatzcode ist auf GitHub zur Verfügung. Sie können anzeigen, herunterladen oder das Repository klonen und mit dem Code spielen, ein besseres Verständnis dafür, wie der Prozess der das Hochladen von Dateien funktioniert zu bekommen.

Und wenn Sie diese Post zu lesen, Sie’ll Liebe Lernbare; der Ort, frische Fähigkeiten und Techniken, von den Meistern zu lernen. Mitglieder erhalten sofortigen Zugriff auf alle von Sitepoint’s E-Books und interaktive Online-Kurse, wie Jump Start PHP.

Kommentare zu diesem Artikel sind geschlossen. Haben Sie eine Frage zu PHP? Warum es nicht in unserem Forum stellen?

Hallo zusammen. Ich brauche Hilfe?
Ich brauche ein paar Dateien vom Client zum Server hochladen.
Die erste, muss ich einen Benutzer aus Listenfeld auswählen (Beispiel: Benutzer A) und danach habe ich beginnen Upload. Wenn ich den Benutzer A wählen, wird die Datei nach dem Upload sein Geschäft in "Upload / a"Wenn Benutzer B, speichert Datei in "upload / b"….
Wer kann mir helfen? Ich brauche Details Code.
Danke noch einmal.

Vielen Dank für dieses tuto und Ihre Sicherheitshinweisen. Ich werde mein Bild-Upload-Skript sichern nun durch den Bildtyp überprüfen!

http://www.jamesspittal.com James Spittal

Ein wenig paranoid, aber laut hier denken heraus: Was passiert, wenn der Benutzer eine wirklich lange Dateinamen setzt? Z.B: "AAAAAAAAAAAA ‚x 1024 als Dateiname?

Es ist mein Verständnis, dass auf den meisten Unix-basierten Systemen – die maximale Länge des Dateinamens 255 Zeichen ist.

Quelle: www.sitepoint.com

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

elf − elf =