どうも、Hiroyukiです^^
今日は、
Herokuで、アップロードするファイル(画像・動画)のサイズ上限を上げる方法
について書きたいと思います。
#記事を書いた経緯は・・・
というのも、先日Qiitaにアップした
###YouTube Data API を利用したオリジナルサービス
があるのですが、お陰さまで見ていただいた方から好評を頂いたので
開発の過程で苦労したところなどを発信していこうと思い、
今回はサービス開発上で、「最後に苦しんだところ」を解説していきます!
皆さんも、Herokuにサービスをデプロイする、開発最終段階となると
####「あとはデプロイするだけの楽チン作業だわ!ヒャッホーイっ!!」
となると思いますが(実体験)、
デプロイ後、
####「あれ・・・?アップロード機能が動かない・・・。どゆこと??? (TT)涙目」
となって、最後の段階だけになかなか気持ちが萎えてしまいました。。。(実体験)
皆さんも、開発最終局面で萎えないように、万一同じ問題が起こったら、下記方法を実践してみて下さい〜
#ここからテクニック解説
前置きが長くなりましたが、ここから本題。
僕のサービスの場合、このサービス経由で「YouTubeへの動画アップロードができる」機能を付けているんですが
####「動画をアップロードしようとすると、なぜかバリデーションエラーが出る!」
という問題が発生しました。
自分の開発環境上でプレビューしても、上手く動くし、変なバリデーションなんか付けてないのに・・・。
UploadController.phpのstoreアクション(YouTubeへの動画投稿)のみ抜粋
public function store(Request $request)
{
$this->validate($request,[
'video' => 'required|file|mimes:mp4,qt,x-ms-wmv,mpeg,x-msvideo',
'title' => 'required|max:24',
'description' => 'required|max:191',
]);
$upload_movie = Youtube::upload($request->file('video')->getPathName(),[
'title' => $request->title,
'description' => $request->description,
// 'tags' => ['api','youtube'],
]);
//・・・(中略)・・・
return view('upload',['user'=>$user,'movies'=>$movies,]);
}
いろいろ悩んで調べたのですが、
####「もしかして、ファイルサイズの上限がHerokuに制限されてるんじゃね??」
という結論に行き着きました。
開発環境では、
php.ini
・・・(前略)・・・
upload_max_filesize=100M
・・・(中略)・・・
post_max_size=100M
・・・(後略)・・・
と設定していたので、100MBまでの動画は余裕でアップロードできていたのですが、
Herokuに上げた途端上記問題が発生したので、Heroku独自の制限を疑い始めました。
###解決方法は以下の通り!
意外と、超カンタンで驚き(笑)
####1.".user.ini"というファイルを作ります(下記コードのみ記載)
.user.ini
upload_max_filesize=100M
post_max_size=100M
####2.(Laravleの場合)".user.ini"をpublic直下に置く
####3.Herokuへデプロイする
やってみると メチャ×2 シンプルでした^^;
####これで解決するかもなんだから、悩んでる人は一度トライすべし!!!!
#Heroku上での画像アップロード機能について
そもそもHerokuのファイルサイズ上限に気づくのが遅くなったのは、他の画像などのアップロード時は、
###「AWSのストレージ機能 S3」
に保存されるように設定していたから。
S3のファイルサイズ上限と、Herokuのファイルサイズ上限は異なるので、
####「S3には大きなサイズのファイルがアップできるけど、Herokuにはアップできない!??WHY??」
となって悩み続けておりました。。。
####S3へアップロードするのも、意外と苦労したので、その方法も後日解説したいと思います!
ではまた!^^