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.
'file_put_contents' schreibt aus Strings, nicht aus Dateihandles. Warum nicht 'copy()' verwenden? – mario
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
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(). –