🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Laravel

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

Q&A

1回答

1062閲覧

jTinderをベースにLaravelにて動画をアップロードする仕組みを構築したい。

genpon

総合スコア0

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Laravel

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

0グッド

0クリップ

投稿2021/03/13 07:17

前提・実現したいこと

Laravelで動画アップロードをしたいのですが、動画のみできません。
jTinderでフロントエンドは実装、画像はアップロードできるものの、
動画のアップロードを行うためにバリテーションの変更なども完了済み
最終的な実装イメージはTiktokのように音声や動画がスワイプされるUIです。
(もともと参考にしたいサイトもjTinderも画像のみアップロードする仕様のため、
変数の文言はimageとなってます)

バリテーション
https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

実装環境
・Laravel、Cloud9環境

状況
・画像はアップロードできている
・php.iniでアップロードサイズ、ポストサイズを調整、メモリは最大に変更済み
・アップロードを試みた動画ファイルはmp4、mpeg、mpeg4

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

エラーメッセージ エラーはなく、アップロードボタンを押してもアップロード画面で遷移しない(画像は登録される。動画のみ)

###該当のソースコード

PHP

1RegisterController.php 2 3 4ソースコード 5<?php 6 7namespace App\Http\Controllers\Auth; 8 9use App\Http\Controllers\Controller; 10use App\Providers\RouteServiceProvider; 11use App\User; 12use Illuminate\Foundation\Auth\RegistersUsers; 13use Illuminate\Support\Facades\Hash; 14use Illuminate\Support\Facades\Validator; 15use Illuminate\Http\Request; 16use Intervention\Image\Facades\Image; 17use App\Services\CheckExtensionServices;//拡張子 18use App\Services\FileUploadServices; //ファイルアップロード 19 20 21class RegisterController extends Controller 22{ 23 24 protected $redirectTo = RouteServiceProvider::HOME; 25 26 27 protected function validator(array $data) 28 { 29 30 //バリテーション 31 return Validator::make($data, [ 32 'name' => ['required', 'string', 'max:255'], 33 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 34 'password' => ['required', 'string', 'min:4', 'confirmed'], 35 'img_name' => ['file','mimes:jpeg,png,jpg,mp3,mp4v-es,mpeg,quicktime,mpv,mp4,mpeg4-generic,mpeg4', 'max:200G'], 36 'self_introduction' => ['string', 'max:255'], 37 ]); 38 } 39 40 /** 41 * Create a new user instance after a valid registration. 42 * 43 * @param array $data 44 * @return \App\User 45 */ 46 47 protected function create(array $data) 48 { 49 50 $imageFile = $data['img_name']; 51 52 $list = FileUploadServices::fileUpload($imageFile); 53 54 list($extension, $fileNameToStore, $fileData) = $list; 55 $data_url = CheckExtensionServices::checkExtension($fileData, $extension); 56 57 $image = Image::make($data_url); 58 59 60 return User::create([ 61 'name' => $data['name'], 62 'email' => $data['email'], 63 'password' => Hash::make($data['password']), 64 'self_introduction' => $data['self_introduction'], 65 'sex' => $data['sex'], 66 'img_name' => $fileNameToStore, 67 68 ]); 69 } 70 71 72}

PHP

1FileUploadServices.php 2<?php 3 4namespace App\Services; 5 6class FileUploadServices 7{ 8 public static function fileUpload($imageFile){ 9 10 $fileNameWithExt = $imageFile->getClientOriginalName(); 11 12 $fileName = pathinfo($fileNameWithExt, PATHINFO_FILENAME); 13 14 $extension = $imageFile->getClientOriginalExtension(); 15 16 $fileNameToStore = $fileName.'_'.time().'.'.$extension; 17 18 $fileData = file_get_contents($imageFile->getRealPath()); 19 20 $list = [$extension, $fileNameToStore, $fileData]; 21 22 return $list; 23 24 } 25 26} 27 28 29

PHP

1CheckExtensionServices.php 2<?php 3 4namespace App\Services; 5class CheckExtensionServices 6{ 7 8 public static function checkExtension($fileData, $extension){ 9 10 $extension = mb_strtolower($extension); 11 12 if ($extension === 'jpg'){ 13 $data_url = 'data:image/jpg;base64,'. base64_encode($fileData); 14 } 15 16 if ($extension === 'jpeg'){ 17 $data_url = 'data:image/jpg;base64,'. base64_encode($fileData); 18 } 19 20 if ($extension === 'png'){ 21 $data_url = 'data:image/png;base64,'. base64_encode($fileData); 22 } 23 24 if ($extension === 'gif'){ 25 $data_url = 'data:image/gif;base64,'. base64_encode($fileData); 26 } 27 28 if ($extension === 'mp4'){ 29 $data_url = 'data:video/mp4;base64,'. base64_encode($fileData); 30 } 31 32 if ($extension === 'mpeg'){ 33 $data_url = 'data:video/mpeg;base64,'. base64_encode($fileData); 34 } 35 36 if ($extension === 'mpeg4'){ 37 $data_url = 'data:video/mpeg4;base64,'. base64_encode($fileData); 38 } 39 40 if ($extension === 'mpeg4-generic'){ 41 $data_url = 'data:video/mpeg4-generic;base64,'. base64_encode($fileData); 42 } 43 return $data_url; 44 } 45} 46 47 48

試したこと

・下記を-1、300G、200Gに変更(何度かこのサイズも変えて検証を実施済)
memory_limit – PHPの実行に使用するメモリの使用容量。
post_max_size – 送信できるPOSTデータの許容サイズ
upload_max_filesize – ファイルアップロードの許容サイズ。
https://gray-code.com/php/setting-for-file-upload-by-phpini/

・バリテーションにmp4等を追加

ここに問題に対して試したことを記載してください。

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

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

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

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

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

guest

回答1

0

max:200Gみたいな指定はできない。
キロバイトでの数値。

200GBなんて指定は異常すぎてどうせアップロードできないので現実的な数字にしたほうがいい。
メモリ以外にもmax_execution_timeで制限される。

投稿2021/03/13 07:56

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

genpon

2021/03/15 13:28

ありがとうございます。 仰るように200MB程度、20MBなど小さくしてみましたが、やはりStorageに格納できないようです。 他にもmax_execution_timeの設定も30から60などに変更してみました。 検証ツールでもエラーが出ず完全に八方塞がりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問