6
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Herokuで、アップロードするファイル(画像・動画)のサイズ上限を上げる方法!

Last updated at Posted at 2019-09-03

どうも、Hiroyukiです^^

今日は、
Herokuで、アップロードするファイル(画像・動画)のサイズ上限を上げる方法
について書きたいと思います。

#記事を書いた経緯は・・・

というのも、先日Qiitaにアップした
###YouTube Data API を利用したオリジナルサービススクリーンショット 2019-09-01 8.17.24.png

があるのですが、お陰さまで見ていただいた方から好評を頂いたので
開発の過程で苦労したところなどを発信していこうと思い、
今回はサービス開発上で、「最後に苦しんだところ」を解説していきます!

皆さんも、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へアップロードするのも、意外と苦労したので、その方法も後日解説したいと思います!
ではまた!^^

6
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?