2012-04-01 4 views
2

Ich habe ein interessantes Problem. Ich muss einen Fortschrittsbalken aus einer asycronusly php Datei herunterladen. Ich dachte, der beste Weg, es zu tun ist, bevor der Download beginnt das Skript macht eine TXT-Datei, die den Dateinamen und die ursprüngliche Dateigröße auch enthält.Problem, um eine aktuell herunterzuladende Dateigröße zu bestimmen?

Jetzt haben wir eine Ajax-Funktion, die ein PHP-Skript aufruft, was die lokale Dateigröße überprüfen soll. Ich habe 2 Hauptprobleme.

  1. Dateien sind größer als 2GB so filesize() Funktion aus dem Geschäft ist
  2. Ich habe versucht, einen anderen Weg zu finden, die lokale Dateigröße wie folgt zu bestimmen:

.

Leider gibt mir der zweite Weg eine Menge Fehler, vorausgesetzt, ich kann eine Datei nicht öffnen, die gerade heruntergeladen wird.

Gibt es eine Möglichkeit, die Größe einer Datei, die gerade heruntergeladen wird, zu überprüfen, und die Dateigröße wird größer als 2 GB sein?

Jede Hilfe wird sehr geschätzt.

+0

Haben Sie völlig PHP überspringen betrachtet und HTTP HEAD-Anforderung verwenden, um die Dateigröße direkt zu erhalten vom Webserver? –

+0

Was ist dein Betriebssystem? – safarov

+0

Milan Ihr Weg sieht sehr interessant aus Kannst du mir eine Codebeispiel geben, wie man das macht oder kannst du deine Gedanken dazu ausdrücken? – Wermerb

Antwort

1

fand ich die Lösung durch eine exec() Funktion:

exec("ls -s -k /path/to/your/file/".$file_name,$out); 
0

Ändern Sie einfach Ihr Betriebssystem und PHP, um 64-Bit-Computing zu unterstützen. und Sie können immer noch filesize() verwenden. Von Dateigröße() Handbuch:

Return Values

Returns the size of the file in bytes, or FALSE (and generates an error of level E_WARNING) in case of an error.

Note: Because PHP's integer type is signed and many platforms use 32bit integers, some filesystem functions may return unexpected results for files which are larger than 2GB.

+0

wenn ich filesize() benutze, bekomme ich diesen Fehler: filesize() [function.filesize]: stat failed for. Ich benutze Linux für die Entwicklung, aber es wird unter Windows laufen. Beide Systeme sind 64 Bit. – Wermerb

+0

verwenden Sie den vollständigen Pfad für die Dateigröße? 'filesize ("/full/Pfad/zu/Download/Datei ");' – Superbiji

+0

Ja, ich habe es auch versucht, es ist immer noch die gleiche Fehlermeldung – Wermerb

Verwandte Themen