0
現在のコード:含まますfile_put_contents(以上1つのファイル)
public function downloadInvoicesFromServer($invoices=array())
{
foreach ($invoices as $invoice)
{
if ($stream = fopen($invoice, 'r'))
{
file_put_contents(PATH . '/invoices/' . rand() . '.pdf', $stream);
fclose($stream);
}
}
}
は、3つのファイルです。 PHPは3つのインクルードされたファイルを返しますが、コンテンツを持つ最後のファイルのみを返します。最初の2つのファイルは空です。
私は何が間違っているのか分かりません。誰も私を助けることができますか?
最終結果: 2(またはそれ以上)のファイルを自分のサーバーにアップロードされ、電子メールで(もちろん、オリジナルのコンテンツで)添付ファイルとして送信されます。
問題: 最後のファイルのみが元の内容です。他のすべてのファイルは、何個のファイルが空であっても内容は空です。
'file_put_contents'はファイルハンドルからではなく、文字列から書き込みます。なぜ 'copy()'を使わないのですか? – mario
http://php.net/manual/en/function.file-put-contents.php データがストリームリソースの場合、そのストリームの残りのバッファは指定されたファイルにコピーされます。これは、stream_copy_to_stream()の使用と同様です。 – newage
trim()関数が機能しました。ご返信ありがとうございます!実際のコードはうまくいきましたが、PHP_EOLが爆発(テキスト領域にシフト入力)するにはtrim()が必要です。 –