Frage

Ich habe eine PHP-Form-Dateien für das Hochladen und es funktioniert gut und zeigt eine Fehlermeldung, wenn etwas schief gelaufen ist. Das ist alles gut.

Das Problem ist, wenn ich mit einer wirklich großen Datei zu testen, es erfrischt nur die Seite, als ob ich nicht eine Datei an alle geschickt hatte, und keiner der $ _POST Variablen aus der Form wird auch an den Server gesendet.

Ich mag den Benutzer einen Fehler angezeigt werden, sie wissen zu lassen, dass die Datei zu groß ist. Aber ich kann das nicht tun.

Wer weiß, was passiert?

War es hilfreich?

Lösung

Überprüfen Sie Ihre PHP-ini-Datei, die bestimmt, wie groß eine Datei PHP können hochgeladen werden. Diese Variablen sind wichtig:

  • max Upload-Dateigröße (upload_max_filesize)
  • max Post Datengröße (post_max_size)
  • Speichergrenze (memory_limit)

Jede Uploads außerhalb dieser Grenzen werden ignoriert oder errored-out, je nach Einstellung.

In diesem Abschnitt wird in der Dokumentation hat die beste Zusammenfassung: http://ca3.php.net/manual/en/features.file-upload.common-pitfalls.php

EDIT: Beachten Sie auch, dass die meisten Browser nicht Uploads über 2 GB groß senden. Dieser Link ist veraltet, aber gibt eine Idee: http://www.motobit.com/help /scptutl/pa98.htm . Wer noch eine bessere Quelle für Informationen über das?

Es gibt auch Grenzen, die vom Server auferlegt werden können, wie zum Beispiel Apache:

Andere Tipps

Ihre $ _POST ist höchstwahrscheinlich leer, weil der Upload überschritten die post_max_size Richtlinie:

Von PHP Richtlinien :

  

Wenn die Größe der Postdaten größer   als post_max_size, die $ _POST   und $ _FILES ist leer .   Dies kann auf verschiedene Weise verfolgt werden,   z.B. durch den $ _GET Variable vorbei an   das Skript die Verarbeitung der Daten, d.h.   <form action="edit.php?processed=1"> und   wenn $ _GET dann Überprüfung [ ‚verarbeitet‘]   eingestellt ist.

Sie können die Größe der Datei kennen, die hochgeladen werden, bis sie vollständig geladen wird. also, wenn Sie die Dateigröße bestimmen möchten, und zeigen dann einen Fehler für große Dateien, müssen Sie zuerst die Datei hochgeladen haben, dann überprüfen Sie die Dateigröße. inorder eine große Datei hochgeladen zu haben, sollten Sie zwei Einstellungen in der PHP-Konfigurationsdatei php.ini gesetzt. öffnen Sie es und suchen Sie nach „upload_max_filesize“ und den Wert auf maximalen Wert, den Sie wollen einstellen. dann müssen Sie den Maximalwert für die POST-Parameter eingestellt, weil hochgeladene Dateien über HTTP POST-Methode empfangen werden. finden „post_max_size“ und legen Sie es auf einen großen Wert an.

würde ich ein einfaches Skript implementieren, die Ajax weiß nicht regelmäßig ruft, wie viel von der Upload abgeschlossen ist. Sie können dann eine Art von Fortschrittsbalken implementieren. Es gibt ein paar Beispiele auf dem Netz:

http://martinjansen.com/ 2007/04/28 / Datei-Upload-Fortschritt-Balken-mit-php /

max Upload-Dateigröße (upload_max_filesize) max Postdatengröße (post_max_size) Die Richtlinien sind Sie müssen festlegen. Ich habe es mit mehreren OS getestet, Browser etc. und dies sind die einzigen beiden, was Sie über Sorgen machen müssen.

bildet neben den Optionen wie die ehemaligen Nutzer Fragen:

max upload filesize (upload_max_filesize)
max post data size (post_max_size)
memory limit (memory_limit)

gibt es auch ein, wenn die Datei sehr groß ist, oder die Leitung besetzt ist, es muss viel Zeit, um diese Operation auszuführen, die zu ceil der Skriptausführung Limit erreicht wird.

max_execution_time
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top