Ankündigung

Einklappen
Keine Ankündigung bisher.

In PHP an einer bestimmten Position einer Datei schreiben.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • In PHP an einer bestimmten Position einer Datei schreiben.

    Ich kenne den Weg um am Anfang oder am Ende einer Datei zu schreiben.

    PHP-Code:
    $file fopen($filename,"a");
    $input file_get_contents ("php://input");
    fwrite($file,$input);
    fclose($file); 
    existieren bei PHP Funktionen um an einer beliebigen Stelle in eine Datei zu schreiben? Der Hintergrund ist folgender. Ich übertrage ein Bild per POST an die PHP Datei. Bei mir local funktioniert alles richtig. Wenn aber die Datei auf einen Server im Internet stückchenweise übertragen wird, dann passiert es, dass die Pakete durcheinander ankommen. Diese Pakete werden aber immer an das Ende der Datei geschrieben. Somit ist die Datei am Ende korrupt. Jetzt würde ich gerne am Anfang dem Skript mitteilen wie groß die erwartete Datei ist, diese würde dann angelegt werden. Mit jedem Paket würde ich dann die Position mit geben. An diese Position müsste der PHP Skript das Paket in die Datei schreiben.

    Ist so etwas in PHP möglich?


  • #2
    Die Pakete kommen in falscher Reihenfolge an? HTTP läuft über TCP/IP. Und TCP garantiert eine richtige Reihenfolge der Pakete. Ganz ehrlich glaub ich dass der Fehler wo anders liegt. Wieso machst du das ganze nicht über einen ganze normalen HTTP Fileupload und kopierst die Datei die im Tempordner landet dann an die richtige Position so wie es bei jedem Uploadskript der Fall ist?

    Kommentar


    • #3
      Zitat von Flor1an Beitrag anzeigen
      Die Pakete kommen in falscher Reihenfolge an? HTTP läuft über TCP/IP. Und TCP garantiert eine richtige Reihenfolge der Pakete. Ganz ehrlich glaub ich dass der Fehler wo anders liegt. Wieso machst du das ganze nicht über einen ganze normalen HTTP Fileupload und kopierst die Datei die im Tempordner landet dann an die richtige Position so wie es bei jedem Uploadskript der Fall ist?
      ich sende die Daten aus einer Silverlight-Anwendung. Die Pakete werden aus Silverlight einzeln versendet. Ein Paket ist nicht ein TCP/IP Paket. Mit Paket meine ich, dass die Datei zerstückelt gesendet wird. So ein Stückchen wird beim übertragen in TCP/IP Pakete zerteilt und übertragen. Die TCP/IP Pakete kommen natürlich alle richtig an, aber diese "Stückchen" kommen anscheint durcheinander an. Und dadurch ist die Datei letztendlich korrupt.

      Wenn ich die Datei vollständig in einem Stück mit POST versende, dann kommt es auch richtig an und die Datei ist nicht beschädligt. Allerdings bekomme ich auf der Silverlight Seite nicht mit wenn es vollständig übertragen ist und kann den Fortschritt der Übertragung nicht visualesieren.

      Kommentar


      • #4
        Zitat von el_vital Beitrag anzeigen
        ich sende die Daten aus einer Silverlight-Anwendung. Die Pakete werden aus Silverlight einzeln versendet.
        Hast du diese Stückelung implementiert, oder macht Silverlight das von sich aus?

        Die TCP/IP Pakete kommen natürlich alle richtig an, aber diese "Stückchen" kommen anscheint durcheinander an.
        Also machst du asynchrone, parallele Requests?


        Jetzt würde ich gerne am Anfang dem Skript mitteilen wie groß die erwartete Datei ist, diese würde dann angelegt werden. Mit jedem Paket würde ich dann die Position mit geben. An diese Position müsste der PHP Skript das Paket in die Datei schreiben.
        Und fseek & Co. hast du beim Nachlesen über die Dateisystemfunktionen im Manual einfach übersehen?

        Kommentar


        • #5
          das Problem lag an der Übertragung in silverlight. Ich habe jetzt ein Beispiel gefunden womit es funktioniert. Den Fehler in meiner Implementierung habe ich noch nicht entdeckt, aber es ist ja auch kein Thema für einen PHP forum.

          Danke.

          Kommentar

          Lädt...
          X