質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

777閲覧

アイコンの画像をアップロードしたい。

ucchii

総合スコア7

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2020/03/29 12:42

編集2020/03/30 03:31

前提・実現したいこと

Laravelで掲示板アプリを作成しています。ユーザーのアイコンを登録できるようにしたいのですが、画像をアップロードしようとすると次のようなエラーが発生してしまいます。画像の保存はAWSのS3に保存されるように指定しています。

発生している問題・エラーメッセージ

The icon must be a file. The icon must be an image. The icon must be a file of type: jpeg, png.

アップロードを試みたファイルの種類はpngでしたが上記のエラーが発生しました。

該当のソースコード

RegisterController

php

1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\User; 6use App\Http\Controllers\Controller; 7use Illuminate\Support\Facades\Validator; 8use Illuminate\Foundation\Auth\RegistersUsers; 9 10class RegisterController extends Controller 11{ 12 /* 13 |-------------------------------------------------------------------------- 14 | Register Controller 15 |-------------------------------------------------------------------------- 16 | 17 | This controller handles the registration of new users as well as their 18 | validation and creation. By default this controller uses a trait to 19 | provide this functionality without requiring any additional code. 20 | 21 */ 22 23 use RegistersUsers; 24 25 protected $redirectTo = '/'; 26 27 public function __construct() 28 { 29 $this->middleware('guest'); 30 } 31 32 protected function validator(array $data) 33 { 34 return Validator::make($data, [ 35 'name' => 'required|string|max:191', 36 'email' => 'required|string|email|max:191|unique:users', 37 'password' => 'required|string|min:6|confirmed', 38 'icon' => [ 39 'required', 40 'file', 41 'image', 42 'mimes:jpeg,png', 43 ] 44 ]); 45 } 46 47 protected function create(array $data) 48 { 49 $filename=''; 50 if ($request->file('icon')->isValid([])) { 51 $filename = $request->file('icon')->store('img'); 52 53 54 $image = $request->file('icon'); 55 56 // バケットの`*****`フォルダへアップロード 57 $path = Storage::disk('s3')->putFile('*****', $image, 'public'); 58 59 $url = Storage::disk('s3')->url($path); 60 } 61 62 return User::create([ 63 'name' => $data['name'], 64 'email' => $data['email'], 65 'password' => bcrypt($data['password']), 66 'icon' => $data['icon'], 67 ]); 68 } 69}

register.blade.php

php

1@extends('layouts.app') 2 3@section('content') 4 <div class="text-center"> 5 <h1>会員登録</h1> 6 </div> 7 8 <div class="row"> 9 <div class="col-sm-6 offset-sm-3"> 10 11 {!! Form::open(['route' => 'signup.post']) !!} 12 <div class="form-group"> 13 {!! Form::label('name', '氏名') !!} 14 {!! Form::text('name', old('name'), ['class' => 'form-control']) !!} 15 </div> 16 17 <div class="form-group"> 18 {!! Form::label('email', 'メールアドレス') !!} 19 {!! Form::email('email', old('email'), ['class' => 'form-control']) !!} 20 </div> 21 22 <div class="form-group"> 23 {!! Form::label('icon', 'アイコン') !!} 24 {!! Form::file('icon') !!} 25 </div> 26 27 <div class="form-group"> 28 {!! Form::label('password', 'パスワード') !!} 29 {!! Form::password('password', ['class' => 'form-control']) !!} 30 </div> 31 32 <div class="form-group"> 33 {!! Form::label('password_confirmation', 'パスワード(確認)') !!} 34 {!! Form::password('password_confirmation', ['class' => 'form-control']) !!} 35 </div> 36 37 {!! Form::submit('登録', ['class' => 'btn btn-primary btn-block']) !!} 38 {!! Form::close() !!} 39 </div> 40 </div> 41@endsection 42

php

1@extends('layouts.app') 2 3@section('content') 4 @if (Auth::check()) 5 <div class="row"> 6 <aside class="col-sm-4"> 7 <div class="card"> 8 <div class="card-header"> 9 <h3 class="card-title">{{ Auth::user()->name }}</h3> 10 </div> 11 <div class="card-body"> 12 <img src="{{Auth::user()->icon}}" width="150" height="150"> 13 </div> 14 </div> 15 </aside> 16 </div> 17 @else 18 <div class="center-jumbotron"> 19 <div class="text-center"> 20 <h1>**************</h1> 21 <h3>**************</h3> 22 <p>{!! link_to_route('signup.get', '新規登録はこちら', [], ['class' => 'btn btn-lg btn-primary']) !!}</p> 23 24 </div> 25 </div> 26 @endif 27@endsection

ファイルの種類が合っているのにエラーが発生してしまったのかがわかりません。わかる方がいらっしゃいましたらご回答よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/03/29 12:53

jpgは通るのでしょうか
ucchii

2020/03/29 13:00

jpgでもダメでした。
m.ts10806

2020/03/29 21:30

んー。formタグどうなってます? multipartついてないとかありませんか?
ucchii

2020/03/30 00:16

上記の{!! Form:: がフォームタグの代わりをしています。別の機能での画像アップロードではmultipartの指定をせずにアップロードできたのでつけていませんでした。
m.ts10806

2020/03/30 01:18

multipart指定しないとそもそもどのようなファイルも送信されないので、ついてるか、Ajaxで送信されたどちらかだと思います。 formファサードでformタグは今回の記述だけで出力されないように思いますが、出力されたHTMLはどうなってますか? 質問本文に追記してください。 できればblade側も全文追加願います。
ucchii

2020/03/30 01:30

画像の投稿が成功しているファイルを共有するということでしょうか?
m.ts10806

2020/03/30 01:43

いいえ。 あくまで現在のコードとブラウザに出力されたHTMLを追記してもらいたいだけです。質問は編集できます。 他者が再現できる情報が揃っていません。再現できなくても、可否を判断できる情報が足りてません。
ucchii

2020/03/30 03:31

編集いたしました。確認よろしくお願いいたします。
guest

回答1

0

ベストアンサー

表示されるときのhtmlを提示してください。

投稿2020/03/29 18:21

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ucchii

2020/03/30 00:30

すみません。文が最後まで表示されていないのでもう一度投稿を願えますか?
m.ts10806

2020/03/30 00:41

当該ユーザーは何かしらの利用規約違反で凍結されたようなので(プロフィール見ようとしたらわかります)たぶん返ってきません。
ucchii

2020/03/30 00:45

あら。。本当ですね。教えていただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問