2016-12-08 5 views
1

私はユーザーが複数のファイルを複数のファイルにアップロードできる形式のLaravel 5.3アプリを持っています。ファイルフィールド。フォームは、ファイルをアップロードして、私が期待しているようにdestinationPathに移動することができますが、ファイル 'filename'の各値を変更することはできません。ファイル名の値をphp ** .tmpとして保存し続けます。個々のアップロードファイル名を設定するにはどうすればよいですか?

ここに私のコントローラーのforeachがあります。

 $files = $request->files; 

    foreach($files as $file){ 
     $destinationPath = 'images/forms'; // upload path 
     $filename = $file->getClientOriginalName(); // get image name 
     $file->move($destinationPath, $filename); // uploading file to given path 
     $file->filename = $filename; 
    } 

私は私が探していたがい値(元の名前)を得るかのforeach内のI dd($filename)dd($file->filename)もし私がそのforeachの外dd($files)、ファイル名が一時PHPの値として設定されている場合。

私には何が欠けていますか?ありがとう。

EDIT

ファイルオブジェクトは、次のようになります。

-test:偽

-originalName: "sample_header_1280.png"

-mimeType: "画像/ PNG"

-size:51038

-error:0

パス: "C:¥xampp¥tmp"

ファイル名: "php7240.tmp"

ベース名: "php7240.tmp"

パス名: "C:\ xamppの\ TMP \ php7240.tmp"

拡張子: "TMP"

のrealpath:「C:\ xamppの\ tmp \ php7240.tmp "

originalNameをdbに保存しようとしていますが、デフォルトではファイル名を保存するようです。

+0

なぜforeach内の最後の行を使用していますか? –

+0

ファイルfilenameの値を設定しようとしています。詳細は私の編集を参照してください。 – RushVan

答えて

0

ここではInput :: fileのforeachを使用していません。同じフィールドから複数のファイルをアップロードする場合、ループ、移動、保存するにはforeachを使用します。

ファイルのファイルを同じフォームにアップロードするには、他のフォームと同じように、各入力を個別に処理するだけです。

私の例では私はコントローラでこれを行いました。

$data['image1'] = Input::file('image1')->getClientOriginalName(); 
    Input::file('image1')->move($destinationPath, $data['image1']); 

    $data['image2'] = Input::file('image2')->getClientOriginalName(); 
    Input::file('image2')->move($destinationPath, $data['image2']); 

これは最良の方法です(別の方法があります)が、私にとってはうまくいきません。

関連する問題