Hab’s herausgefunden. Es ist It wasn’t me von Shaggy

...zur Antwort
Wie kann man eine Datei mit c# splitten und mit PHP wieder zusammenbauen?

Hallo, ich möchte eine Datei in c# in mehrere Dateien splitten. Diese Dateien werden dann auf einen Server geladen und sollen dort von PHP wieder zu einer Datei zusammengebaut werden.

Hier mein Code in c# zum erstellen der einzelnen Dateien:

        const int fileSize = 8388608;
    const int snippetSize = 8192;
    private void button3_Click(object sender, EventArgs e)
    {
        byte[] snippet;
        long length = new FileInfo(openFile).Length;
        long snippets = length / snippetSize;
        int currentFile = 0;
        int currentLength = 0;
        int numOfFiles = (int) length / fileSize;

        FileStream fsRead = new FileStream(openFile, FileMode.Open, FileAccess.Read);
        BinaryReader binRead = new BinaryReader(fsRead);
        FileStream fsWrite = new FileStream(destFile + currentFile, FileMode.OpenOrCreate, FileAccess.Write); ;
        BinaryWriter binWrite = new BinaryWriter(fsWrite); ;
        binRead.BaseStream.Seek(0, SeekOrigin.Begin);
        for (long s = 0; s < snippets;s++ )
        {
            snippet = new byte[snippetSize];
            snippet = binRead.ReadBytes(snippetSize);
            binWrite.Write(snippet);
            currentLength += snippetSize;
            if (currentLength > fileSize)
            {
                binWrite.Close();
                fsWrite.Close();
                currentFile++;
                currentLength = 0;
                fsWrite = new FileStream(destFile + currentFile, FileMode.OpenOrCreate, FileAccess.Write);
                binWrite = new BinaryWriter(fsWrite);
                binWrite.BaseStream.Seek(0, SeekOrigin.Begin);
            }
        }
        fsRead.Close();
        fsWrite.Close();
        binWrite.Close();
        binRead.Close();
    }

Mein Code in PHP sieht so aus:

$file = $_GET['file'];
for($i=0;$i<10;$i++){
        $w=fopen($file, "ab");
        $name = $file.$i;
        $size = filesize($name);
        $r=fopen($name,"rb");
        $file = fread($r, $size);
            fclose($r); 
            fwrite($w, $file);  
        fclose($w);
        }

Es kommt, nach dem das PHP-Script durchgelaufen ist, auch eine Datei raus, die genauso groß ist wie die ursprüngliche Datei. Allerdings lässt sich diese nicht mehr richtig öffnen.

Wäre super, wenn hier jemand eine Lösung parat hätte. Danke schonmal :)

...zum Beitrag

Habe den Fehler gefunden. Habe die Anweisung 

for (long s = 0; s < snippets;s++ )

folgendermaßen geändert:

for (long s = 0; s <= snippets;s++ )

Durch die Division length / fileSize enstand mit ziemlicher SIcherheit eine Kommazahl, die beim Konvertieren in int wohl abgeschnitten oder abgerundet wurde. Dadurch wurde das letze Dateischnipsel nicht eingelesen und es fehlten am Ende der neu zusammengesetzen  Datei  bis zu 8 KB. 

...zur Antwort

Also ich habe deine Regel mal getestet und sie funktioniert so wie du es wünschst. Ruft man bla.de/ test1/ test2    auf, wird id und page im PHP-Skript gesetzt und ruft man bla.de /test1            auf, wird nur id gesetzt.

...zur Antwort