2016-06-28 14 views
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(またはそれ以上)のファイルを自分のサーバーにアップロードされ、電子メールで(もちろん、オリジナルのコンテンツで)添付ファイルとして送信されます。

問題: 最後のファイルのみが元の内容です。他のすべてのファイルは、何個のファイルが空であっても内容は空です。

+2

'file_put_contents'はファイルハンドルからではなく、文字列から書き込みます。なぜ 'copy()'を使わないのですか? – mario

+1

http://php.net/manual/en/function.file-put-contents.php データがストリームリソースの場合、そのストリームの残りのバッファは指定されたファイルにコピーされます。これは、stream_copy_to_stream()の使用と同様です。 – newage

+0

trim()関数が機能しました。ご返信ありがとうございます!実際のコードはうまくいきましたが、PHP_EOLが爆発(テキスト領域にシフト入力)するにはtrim()が必要です。 –

答えて

0

trim()関数が機能しました。ご返信ありがとうございます!実際のコードはうまくいきましたが、PHP_EOLが爆発(テキスト領域にシフト入力)するにはtrim()が必要です。

関連する問題