前提・実現したいこと
**前提:**Laravelで作成したアプリをHerokuにデプロイしました。
**実現したいこと:**AWS S3のバケット内にある写真をアプリ上で表示したい。
発生している問題・エラーメッセージ
特にこれといったエラーメッセージはありません。
写真を投稿すると指定のページへリダイレクトしてしまいアプリ上では投稿した画像が表示されません。
S3のバケット内には投稿した写真が存在します。
該当のソースコード
routes/web.php
php
1<?php 2 3/* 4|-------------------------------------------------------------------------- 5| Web Routes 6|-------------------------------------------------------------------------- 7| 8| Here is where you can register web routes for your application. These 9| routes are loaded by the RouteServiceProvider within a group which 10| contains the "web" middleware group. Now create something great! 11| 12*/ 13 14Route::get('login'); 15 16Route::group(['middleware' => 'auth'], function(){ 17 Route::get('/', 'StoriesController@index'); 18 Route::post('/', 'StoriesController@store'); 19}); 20 21Route::group(['middleware' => 'auth'], function(){ 22 Route::get('stories/create', 'StoriesController@add'); 23 Route::post('stories/create', 'StoriesController@upload'); 24 Route::get('/stories/delete', 'StoriesController@delete'); 25}); 26 27Route::get('/profile/delete', 'ProfileController@delete'); 28 29Route::group(['middleware' => 'auth','name'=>'profile'], function () { 30 Route::get('/profile/edit', 'ProfileController@edit'); 31 Route::post('/profile/edit', 'ProfileController@update'); 32 Route::post('/profile/create', 'ProfileController@create'); 33 Route::get('profile/create3', 'ProfileController@index3'); 34}); 35 36Route::get('/home', 'StoriesController@index')->name('home'); 37 38Auth::routes(); 39 40
app/Http/Controller/StoriesController.php※写真を投稿するアクションはstore
アクションです。
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Http\Controllers\Controller; 7use App\Story; 8use App\Profile; 9use Auth; 10use App\Posts; 11use App\History; 12use App\Attachment; 13use Carbon\Carbon; 14use Storage; 15 16class StoriesController extends Controller 17{ 18 19 public function __construct() 20 { 21 $this->middleware('auth'); 22 } 23 24 public function index(Request $request) 25 { 26 $images = Attachment::all(); 27 $cond_title = $request->cond_title; 28 if ($cond_title != '') { 29 $posts = Profile::where('title', $cond_title)->get(); 30 } else { 31 $posts = Profile::all(); 32 } 33 return view('stories.index2', compact('images','posts','cond_title')); 34 } 35 36 public function add() 37 { 38 return view('stories.create2'); 39 } 40 41 public function store(Request $request) 42 { 43 $form = $request->file('images'); 44 $d = new \DateTime(); 45 $d->setTimeZone(new \DateTimeZone('Asia/Tokyo')); 46 $dir = $d->format('Y/m'); 47 $path = Storage::disk('s3')->putFile('/',$form,'public'); 48 $data = $request->except('_token'); 49 50 foreach ($data['images'] as $k => $v) { 51 52 $filename = ''; 53 54 $attachments = Attachment::take(1)->orderBy('id', 'desc')->get(); 55 56 foreach ($attachments as $attachment) { 57 $filename = $attachment->id + 1 . '_' . $v->getClientOriginalName(); 58 } 59 unset($attachment); 60 61 if ($filename == false) { 62 $filename = 1 . '_' . $v->getClientOriginalName(); 63 } 64 $v->storeAs($path, $filename); 65 66 $attachment_data = [ 67 'path' => $path, 68 'name' => $filename 69 ]; 70 71 $a = new Attachment(); 72 $a->fill($attachment_data)->save(); 73 } 74 unset($k, $v); 75 return redirect('/'); 76 } 77 78public function delete(Request $request) 79 { 80 $images = Attachment::find($request->id); 81 $images->delete(); 82 return redirect('/'); 83 } 84 85 // public function upload(Request $request) 86 // { 87 // $this->validate($request, [ 88 // 'file' => [ 89 // 'required', 90 // 'file', 91 // 'image', 92 // 'mimes:jpeg,png', 93 // ] 94 // ]); 95 96 // if ($request->file('images')->isValid([])) { 97 // $path = Storage::disk('s3')->putFile('/',$form,'public'); 98 // return view('stories.index2')->with('filename', basename($path)); 99 // } else { 100 // return redirect('/') 101 // ->back() 102 // ->withInput() 103 // ->withErrors(); 104 // } 105 // } 106} 107
resources/views/stories/create2.blade.php※写真を投稿するページ
php
1@extends('layouts.front2') 2@section('title','StoryCreate') 3 4@section('content') 5<link href="{{ asset('/css/main22.css' )}}" rel="stylesheet"> 6 7<div class="poststory"> 8 <h1>Post Story</h1> 9</div> 10@if ($errors->any()) 11<ul> 12 @foreach($errors->all() as $error) 13 <li>{{ $error }}</li> 14 @endforeach 15</ul> 16@endif 17<form action="{{ url('/') }}" method="POST" enctype="multipart/form-data"> 18 19 <div class="form"> 20 <label for="photo" class="file">Choose Image or Video</label> 21 <div class="post"> 22 <input type="file" class="here" name="images"> 23 24 </div> 25 </div> 26 <br> 27 </div> 28 29 {{ csrf_field() }} 30 <div class="post"> 31 <div class="btn postbtn"> 32 <input type="submit" value="post" /> 33 </div> 34 </div> 35</form> 36 37@endsection 38
resources/views/stories/index2.blade.php※投稿した写真を表示したいページ
php
1@extends('layouts.front2') 2@section('title','mainpage') 3 4@section('content') 5 6<link rel="stylesheet" href="{{ asset('css/main2.css') }}"> 7 8<div class="profile"> 9 <div class="name"> 10 @guest 11 <a class="nav-link2" href="{{ route('register')}}">{{ __('Create Accout!')}}</a> 12 @else 13 <a id="navbarDropdown" class="nav-link2" href="#" role="button"> 14 {{ Auth::user()->name }}<span class="caret"></span></a> 15 <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;"> 16 @csrf 17 </form> 18 @endguest 19 </div> 20 21<div class="aboutme"> 22 <tbody> 23 @foreach($posts as $profile) 24 <tr> 25 <td>{{ \Str::limit($profile->title, 100) }}</td> 26 <td>{{ \Str::limit($profile->body, 250) }}</td> 27 </tr> 28 <a href="{{ action('ProfileController@delete', ['id' => $profile->id]) }}">delete</a> 29 <a href="{{ action('ProfileController@update', ['id' => $profile->id]) }}" class="update">update</a> 30 @endforeach 31</tbody> 32<br> 33</div> 34</div> 35 36<div class="new"> 37 <div class="newtitle"> 38 <h1>New</h1> 39 </div> 40 <div class="container1"> 41 @foreach ($images as $image) 42 <img src="{{ $image->path }}" class="images" style="height: 250px; width: 250px; border-radius: 50%;"> 43 <a href="{{ action('StoriesController@delete', ['id' => $image->id]) }}">delete</a> 44 @endforeach 45 <div class="more"> 46 more... 47 </div> 48 </div> 49</div> 50 51 52{{ csrf_field() }} 53@endsection
試したこと
必要な環境変数の設定。
初心者で至らぬ点は多々あるかとは思いますが、ご教授いただけると幸いです。
何卒よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/07 15:07