2016-12-16 6 views
0

に書き込むことができません。介入ツールで画像を保存できません。私はこれを前にしています。私はここで同じことをしますが、今は救われていません。エラーイム取得は次のようになります。これは、まさにこのように動作するはずです何らかの理由で画像データをパス

  $this->validate($request, array(
     'title'=>'required|max:255', 
     'slug'=>'required|min:3|max:255|unique:posts', 
     'body'=>'required', 
     'img'=>'image', 
     'desc'=>'max:255' 
     )); 

    $post=new Post; 
    $post->title=$request->title; 
    $post->slug=$request->slug; 
    $post->body=$request->body; 
    $post->desc = $request->desc; 
    if($request->hasFile('img')){ 
     $image=$request->file('img'); 
     $imageName=time().'.'.$image->getClientOriginalExtension(); 
     $location='static/photos/'.$imageName; 
     Image::make($image)->save($location); 
     $post->image=$imageName; 
    } 

    $post->save(); 
    $post->tags()->sync($request->tags, false); 
    $post->categories()->sync($request->categories, false); 
    /*Session::flash('success', 'The Post Has been published!');*/ 
    return redirect()->route('slug', $post->slug); 

が、私はそれが何らかの理由で動作しませんでした見たとき、私が試した:ここ

NotWritableException in Image.php line 143: 
Can't write image data to path (static/photos/1481902023.jpg) 

は、コントローラに私の店機能ですまたそれもうまくいっていません。

public_path() 

フォルダ自体(静的)は、プロジェクトのルートディレクトリにあります。 {{csrf_field()}}全てこれに加えて

 <div class="{{$errors->has('img')?'has-error':''}}"> 
     <label class="label" for="img">Upload picture</label> 
      <div> 
     <input type="file" name="img" id="img" class="input" multiple="multiple"> 
       </div> 
      </div> 

が、私はまた、そのフォルダへのアクセス権をチェックしている

(サブ:

アップロードフォームビューはこれですフォルダ)に移動し、コマンドを実行しても

icacls "C:\Users\GabMic\b\static" /grant GabMic:F 

ここでは何が欠けていますか? Ps、私はlaravelの最新バージョンを使用しています。助けてくれてありがとう。

+0

ことを確認し、あなたはパスディレクトリをアップロードする777件の権限を与えてくれました! –

+0

あなたのフォルダの許可です。 – Beginner

+0

あなたの場所を 'public_path'関数にラップしようとしましたか? – Beginner

答えて

0

次のコードを試してください。最初にパスを宣言し、フォルダが存在するかどうかを確認します。

if($request->hasFile('img')){ 
    $image=$request->file('img'); 
    $path = base_path("static/photos/"); 
    File::exists($path) or File::makeDirectory($path, 0777, true, true); 
    $img = Image::make($image->getRealPath())->save($path . time().'.'.$image->getClientOriginalExtension(); 
} 
+0

私はこれを試しました。運がない。あなたのコードの中に – GabMic

+0

というパスが 'static/photos /'のように宣言されていました。しかし、そのフォルダはあなたのパブリックフォルダまたはベースのアプリケーションフォルダに関連してどこにありますか? – xhulio

+0

publicと同じレベルにあります – GabMic

-3

試してみてください。

$location='../public/static/photos/'.$imageName; 

または

$location='../storage/static/photos/'.$imageName; 
     Image::make($image)->save($location); 
+0

こんにちは! S.Oへようこそ。私はLaravelで相対パスを使うのが良いのかどうかはわかりません。とにかく、OPは既に絶対パスを使って試してみましたが、うまくいきませんでした。最後に、このソリューションがうまくいく理由についていくつかの詳細を追加してください。 –

+0

ようこそ。あなたは正しいです、それは良い習慣ではありませんが、私はイメージを他の方法で保存することができませんでした。私は明確な答えがありません。私は、オブジェクト "Image"がベンダのディレクトリに保存しようとしていると思います。 –

関連する問題