2016-04-28 22 views
0

問題を説明する前に。イメージがデータベースlaravelにtmpファイルとして保存されています

public function storePost(IdeaRequest $request) 
{ 
    $idea = new Idea(); 
    $idea->idea_title  = $request->input('idea_title'); 
    $idea->user_id   = $request->input('user_id'); 
    $idea->idea_image  = $request->file('idea_image')->move('publicPages\images')->getClientOriginalName(); 
    $idea->idea_info  = $request->input('idea_info'); 
    $idea->selection  = $request->input('selection'); 
    $idea->idea_location = $request->input('idea_location'); 
    $idea->idea_goal  = $request->input('idea_goal'); 
    $idea->idea_description = $request->input('idea_description'); 
    $idea->save(); 
    session()->flash('flash_message', 'Your idea has been submitted for Review'); 
    return back(); 
} 

画像を.tmpファイルとして保存します。物事私はそれだけで拡張子名を返し、さらには画像を保存しません 、

  • guessExtension()

    を試してみました。

  • getClientOriginalName()、これはエラーをスローします。 getClientOriginalNameメソッドが定義されていません。私は メソッドを検索し、そこにあります。そのネームスペースを使用しました Symfony\Component\HttpFoundation\File\UploadedFileそれはうまくいきません のどちらかです。

  • stackoverflowから試したものがありますが、これまでのところ私には は何も働いていません。つまり、私は に多くの時間を費やしてこの問題を解決しましたが、何も効果がありませんでした。どんな助けも高く評価されるでしょう。 ここで

+0

は '$ファイル= $要求 - >ファイル( 'idea_image')を試してみてください'、あなたは何を参照してください。だから私はあなたにも行うことができると思います – Abbasi

答えて

1

あなたが行く:

public function storePost(IdeaRequest $request) 
{ 
    $request->file('idea_image')->move('publicPages\images'); 
    $filename = $request->file('idea_image')->getClientOriginalName(); 

    $idea = new Idea(); 
    $idea->idea_title  = $request->input('idea_title'); 
    $idea->user_id   = $request->input('user_id'); 
    $idea->idea_image  = $filename; 
    $idea->idea_info  = $request->input('idea_info'); 
    $idea->selection  = $request->input('selection'); 
    $idea->idea_location = $request->input('idea_location'); 
    $idea->idea_goal  = $request->input('idea_goal'); 
    $idea->idea_description = $request->input('idea_description'); 
    $idea->save(); 
    session()->flash('flash_message', 'Your idea has been submitted for Review'); 
    return back(); 
} 

は密接に観察します。あなたは、2つの別々のラインでこれを行う必要があります:

$request->file('idea_image')->move('publicPages\images'); 
$filename = $request->file('idea_image')->getClientOriginalName(); 

なぜ?

move()は、新しいファイルを表すオブジェクトFileを返します。

FileクラスにはgetClientOriginalName()メソッドがありません。その方法はUploadedFileに属します。

チェーンすると、存在しないからgetClientOriginalName()にアクセスしようとしています。ドキュメントhereをご覧ください。しかし

...

FilegetFilename()方法を持っているPHPのネイティブSplFileInfo classを拡張します。その後、$ fileNameに= $ファイル> getFilename() `を使用`;

$request->file('idea_image')->move('publicPages\images')->getFilename(); 
+1

ありがとう、トン男!私はあなたの与えられたコードを試して、それは時々働いた。どうしてか分かりません。私はこれら二つの行を '$ request-> file( 'idea_image') - > move( 'publicPages \ images');' '$ filename = $ request-> file( 'idea_image') - > getClientOriginalName();に変更しました。 $ MOBILE = $ request-> file( 'idea_image') - > move( 'images'、 'image_mage') - > getClientOriginalName(); '$ moveImage = $ request-> $ filename); 'ありがとうございました。 –

関連する問題