質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

2863閲覧

herokuでのLaravelでの画像アップロード機能実装について

kyutaro

総合スコア34

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/06/28 06:51

前提・実現したいこと

herokuにデプロイしたlaravelアプリケーションで画像のアップロードができなくなってしまいました
xamppでのlocal環境では動作していたのですが、heroku上で動かしてみるとファイルを添付しPOSTすると500エラーとなります
該当する個所のコードも絞れてはいるのですが、どうして動かないのか、どう記述するべきなのかわからなくなってしまいました
アドバイスお願いいたします

該当のソースコード

下記ソースコードが画像投稿画面でPOSTされた際に呼び出されるコントローラーの処理になります
publicディレクトリにupdateFilesと言うフォルダを作成しておりそこにファイルを移動させ
DBにはそのパスを保存するような形で実装していました
コメントアウトしている3行がエラーの原因だと思われ、コメントアウトした状態だと画像はアップロードできませんがエラーも出ませんので
ここを変更する必要があると思うのですが、どう変更すればよいかわかりません。

$this->validate($request, board::$rules, board::$messages); $id=$request->session()->get('id'); $item=shop::find($id); $file=$request->upfile; // $type=exif_imagetype($file); // $path='updateFiles/'.sha1_file($file).'.jpg'; // move_uploaded_file($file, $path); $board=new board; $board->shop_id=$item->id; $board->text=''; $board->url=$item->url; $board->area=$item->area; $board->save(); $request->session()->flash('msg', '投稿が完了しました'); return redirect('Mypage');

補足情報(FW/ツールのバージョンなど)

Windows10
laravel 8.8.16
PHP 7.3.1

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

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

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

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

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

guest

回答2

0

ベストアンサー

#TL;DR

Laravelの作法と、PurePHPの作法が混ざってしまっています。

heroku云々は置いといて

move_uploaded_file($file, $path);

これが、アップロードされたファイルを移動する関数です。
これが実行されていないため、ファイルが保存されない状態かと思われます

https://www.php.net/manual/ja/function.move-uploaded-file.php

使い方はこちらに。
関数の引数をよくご覧ください。両方ともstringですね?

$file=$request->upfile;

ここで取得できる$fileはIlluminate\Http\UploadedFileのインスタンスです。
Laravelのファイルアップロードについては
https://readouble.com/laravel/5.5/ja/requests.html

こちらを確認してください。

投稿2019/06/28 09:33

mikkame

総合スコア5036

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

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

kyutaro

2019/06/29 06:18

解答ありがとうございました。 アップロードについてpurePHPでの知識だけでlaravelのアップロードについて知ることができました 画像はbase64エンコードして保存する形式で実装できました
guest

0

herokuでは、サーバーローカルに、git管理されていないファイルを保存する事は想定されていないので、
AWS S3などの別途ストレージサービスが必要です。
Herokuでアップロードした画像が時間経つと消える問題
Herokuで消えるファイルと消えないファイル
HerokuでLaravelアプリを動かすときの注意点5つ

投稿2019/06/28 07:44

aro10

総合スコア4106

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

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

mikkame

2019/06/28 09:27

DBにbase64エンコードして保存するという手もあります
kyutaro

2019/06/29 06:18

参考にさせていただきました! 有り難うございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問