投稿画面から画像ファイルをアップロードしたいです。
サイトを参考に、画像ファイルアップロードのプログラムを書いたのですが、
下記、エラーメッセージが出てきて、解決方法が分かりません。
画像のアップロードができるようにエラーの解決方法をご教示願えませんでしょうか?
エラーメッセージ:Call to a member function storeAs() on string
C:\xampp\htdocs\jinminshinbun\app\Http\Controllers\ArticleController.php:78
コントローラーの下記の箇所(ArticleController.php:78)でエラーが発生しています。
$article->image_url = $request->image_url->storeAs('public/post_images', $time . '_' . $request->user() . '.jpg');
コントローラー
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Article; use App\Http\Requests\ArticleRequest; use Illuminate\Support\Facades\Auth; class ArticleController extends Controller { // // public function index() { 略... } public function create() { 略... } public function store(ArticleRequest $request, Article $article) { $article->title = $request->title; $article->body = $request->body; $article->user_id = $request->user()->id; //画像をアップロード // $time = date("Ymdhis"); // $article->image_url = $request->image_url->storeAs('public/post_images', $time . '_' . $request->user() . '.jpg'); // $article->image_url = $request->image_url->Storage::putFile('image_url', $request->file('image_url')); $article->image_url = $request->image_url->storeAs('public/post_images', $time . '_' . $request->user() . '.jpg'); dd($article); $article->save(); return redirect()->route('articles.index'); } }
ビュー
<!-- タイトル --> <div class="md-form"> <label>タイトル</label> <input type="text" name="title" class="form-control" required value="{{ old('title') }}"> </div> <!-- 本文 --> <div class="form-group"> <label></label> <textarea name="body" required class="form-control" rows="16" placeholder="本文">{{ old('body') }}</textarea> </div> <!-- 画像投稿 --> <div class="file-field medium"> <div class="btn btn-outline-default waves-effect float-left"> <span>Choose files<i class="fas fa-cloud-upload-alt ml-3" aria-hidden="true"></i></span> <input type="file" name="image_url" value="{{ old('image_url') }}" multiple> </div> </div>
追記:formの部分
@section('content') <div class="container"> <div class="row"> <div class="col-12"> <div class="card mt-3"> <div class="card-body pt-0"> @include('error_card_list') <div class="card-text"> <form method="POST" action="{{ route('articles.store') }}"> @include('articles.form') <button type="submit" class="btn btn-default btn-block">投稿</button> </form> </div> </div> </div> </div> </div> </div> @endsection
追記:dd($request);の結果
+request: Symfony\Component\HttpFoundation\ParameterBag {#1353 ▼ #parameters: array:4 [▼ "_token" => "7Ah0JObQ5QhecxGgq7ntwnOMECp7xYUgCWjLsaQv" "title" => "dadad" "body" => "dada" "image_url" => "IMG_2693.JPG" ] }
解決のために閲覧したサイト:
下記サイトのファイルアップロードの欄の、ファイル名の指定のところに書いてある、下記の記述をコピペして、avatarの部分や変数を変更してみましたが、うまくいきませんでした。
$path = $request->file('avatar')->storeAs( 'avatars', $request->user()->id );
回答3件
あなたの回答
tips
プレビュー