2016-04-07 6 views
1

を保存しませんがここでLaravel 5.Laravel 5:移動()関数は、私がしようとしている何アップロードされた画像ファイル

の画像アップローダーがフォームで設定することです。

<form action="/edit/{{$id}}" method="POST" enctype="multipart/form-data"> 
     {!! csrf_field() !!} 
     <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>"> 
     <input type="hidden" name="_method" value="PUT"> 
      //There are other tags (including other input) here 
      <input type="file" name="pic" accept="image/*"> 
     <input type="submit" value="Apply Changes"> 
    </form> 

上記のformから実行されるコントローラ機能は次のとおりです。

public function update($id) 
{ 
    $this->model->find($id)->fill($this->request->all())->save(); 
    if ($this->request->hasFile('pic')) { 
     $file = $this->request->file('pic'); 
     $name = $file->getClientOriginalName(); 
     $file->move('assets/serviceimages/', $name); 
    } 

    return redirect('/blahblah'); 
} 

あなたは気づいているかもしれませんが、これは私がしようとしてきたものですassets/serviceimages/ディレクトリ、下にアップロードされたファイルを格納しません。

基本的に私はthis tutorialを追ってきたが、私はAPI documentationを見ていた後でも、どうやら私は何かが欠けていることだし、それが何であるかについては全く無知。

ifコントローラ機能の説明の中で、$file$nameは私が期待していたことが確認されました。

したがって、問題はmove()機能にあると考えられます。

私がアップローダを設定しようとしたのはこれが初めてのことですから、助言をいただければ幸いです。

+1

はパスが実際に存在するか、それが必要な権限を持っているのでしょうか?現在保存しようとしているパスは '/ public/assets/serviceimages /'です。それ以外のログはチェックしていますか? – Ian

答えて

2

Linuxを使用している場合のアクセス許可。それでも解決しない場合は、この方法でそれを試してみてください。

$image = $request->file('pic'); 
$destinationPathImg = '/your path/images/'; 

if (!$image->move($destinationPathImg, $image->getClientOriginalName())) { 
    return 'Error saving the file.'; 
} 

はまた、ウルに追加するこの必要性()

public function update(Request $request, $id) 
+1

ちょうど、実際には、 'move()'メソッド内でLaravelが行うことを複製しています。移動できない場合は例外がスローされます – Ian

+0

はい、わかります。私はこのコードをテストして作業しているので、私はそれをコピーしました。なぜ私はそれを提案したのですか? –

関連する問題