Route
1Route::get('/asr/controller/ssUploadImg', 'ImgUploadController@create'); 2Route::post('/asr/controller/ssUploadImg', 'ImgUploadController@store');
Controller
1namespace App\Http\Controllers; 2use Illuminate\Http\Request; 3use Storage; 4 5class ImgUploadController extends Controller 6{ 7 public function create(){ 8 return view('asr/controller/ssUploadImg'); 9 } 10 11 public function store(Request $request){ 12 $all = $request->all(); 13 $uploaded_image = $request->file('ssImg'); 14 15 if($request->hasFile('ssImg') && $uploaded_image->isValid()){ 16 $request->file('ssImg')->store('public'); 17 } 18 19 //S3upload 20 $contents = Storage::get('public/'.$uploaded_image); 21 Storage::disk('s3')->put($uploaded_image, $contents, 'public'); 22 23 return redirect('asr/controller/ascn_stff_ctrl_panel'); 24 } 25}
blade
1 <form class="form-horizontal" method="POST" action="{{ url('/asr/controller/ssUploadImg') }}" enctype="multipart/form-data"> 2 3 @csrf 4 5 <div class="form-group"> 6 <input type="file" name="ssImg"> 7 </div> 8 9 <button type="submit" class="btn btn-primary">Upload</button> 10 11 </form>
以上のような形でファイルを作成しました。
参考サイトと同様のコントローラーを使用すると$passが定義されていませんと出た為です。
これをアップロードすると
このようなエラーが出ます。
この状態で、画像はstrageフォルダに入っていますが、S3にはアップロードされていません。
また画像をアップロードする度にphp4F1B.tmpの個所が変更されます。
お詳しい方いらっしゃいましたら、お教え願えませんでしょうか?
追記。
controllerを以下のように変更することによって、このエラーは解消することが出来ました。
controller2
1 $params = $request->validate([ 2 'ssImg' => 'required|file|image|max:4000', 3 ]); 4 5 $file = $params['ssImg']; 6 $fileContents = file_get_contents($file->getRealPath()); 7 8 // Storage::disk('s3')->put('ファイルパス',ファイルデータ,'公開設定'); 9 Storage::disk('s3')->put($file->hashName(), $fileContents, 'public'); 10 return redirect()->action('asr/controller/ascn_stff_ctrl_panel');
しかし次は以下のようなエラーになってしまいます。
envファイル、filesystems.phpの設定を見直しましたが、Regionは入力済です。
引き続き、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー