2016-06-28 17 views
0

Aktuelle Code:file_put_contents (mehr als 1 Datei)

public function downloadInvoicesFromServer($invoices=array()) 
{ 
    foreach ($invoices as $invoice) 
    { 
     if ($stream = fopen($invoice, 'r')) 
     { 
      file_put_contents(PATH . '/invoices/' . rand() . '.pdf', $stream); 
      fclose($stream); 
     } 
    } 
} 

Enthalten sind 3 Dateien. PHP gibt mir diese 3 enthaltenen Dateien zurück, aber nur die letzte Datei mit Inhalt. Die ersten 2 Dateien sind leer.

Ich habe keine Ahnung, was ich falsch mache. Kann mir jemand helfen?

End Ergebnis: 2 (oder mehr) Dateien auf meinem Server hochgeladen werden und werden als Anhänge (mit dem ursprünglichen Inhalt, natürlich) in einer E-Mail gesendet.

Ausgabe: Nur die letzte Datei hat ihren ursprünglichen Inhalt. Bei allen anderen Dateien ist der Inhalt (egal wie viele Dateien) leer.

+2

'file_put_contents' schreibt aus Strings, nicht aus Dateihandles. Warum nicht 'copy()' verwenden? – mario

+1

http://php.net/manual/en/function.file-put-contents.php Wenn Daten eine Stream-Ressource sind, wird der verbleibende Puffer dieses Streams in die angegebene Datei kopiert. Dies ist ähnlich bei der Verwendung von stream_copy_to_stream(). – newage

+0

trim() funktion hat funktioniert. Vielen Dank für Ihre Antwort! Der eigentliche Code funktionierte, aber es scheint PHP_EOL explodieren zu lassen (Shift-Eingabe im Textbereich) benötigt eine trim(). –

Antwort

0

trim() funktion hat funktioniert. Vielen Dank für Ihre Antwort! Der eigentliche Code funktionierte, aber es scheint PHP_EOL explodieren zu lassen (Shift-Eingabe im Textbereich) benötigt eine trim().