0
1

More than 3 years have passed since last update.

laravel アプリのローカルにあるPDFファイルをブラウザで表示する

Posted at

目的

  • laravelを構成するファイルのローカルに保存されているPDFファイルをブラウザ表示させる方法をまとめる

環境

  • ハードウェア環境
項目 情報
OS macOS Catalina(10.15.5)
ハードウェア MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
プロセッサ 2 GHz クアッドコアIntel Core i5
メモリ 32 GB 3733 MHz LPDDR4
グラフィックス Intel Iris Plus Graphics 1536 MB
  • ソフトウェア環境
項目 情報 備考
PHP バージョン 7.4.8 Homebrewを用いてこちらの方法で導入→Mac HomebrewでPHPをインストールする
Laravel バージョン 6.X commposerを用いてこちらの方法で導入→Mac Laravelの環境構築を行う

情報

方法1 asset()redirect()を用いる

  1. PDFファイルの設置
    1. 下記ディレクトリに「01_file.pdf」を設置する。(※ファイル名が同じPDFファイルなら内容は何でも良い。)
      1. view_pdf_app/storage/app/public/pdf/01_file.pdf
  2. ルーティングの記載

    1. ルーティングファイルを編集して下記のように記載する。

      view_pdf_app/routes/web.php
      <?php
      
      use Illuminate\Support\Facades\Route;
      use App\Http\Controllers\PdfController;
      
      /*
      |--------------------------------------------------------------------------
      | Web Routes
      |--------------------------------------------------------------------------
      |
      | Here is where you can register web routes for your application. These
      | routes are loaded by the RouteServiceProvider within a group which
      | contains the "web" middleware group. Now create something great!
      |
      */
      
      Route::get('/', function () {
          return view('welcome');
      });
      
      Route::get('/pdf/redirect', [PdfController::class, 'showRedirect'])->name('pdf.show.redirect');
      
  3. コントローラーファイルの作成と記載

    1. 下記コマンドをview_pdf_appディレクトリで実行する。

      $ php artisan make:controller PdfController
      
    2. 作成したコントローラーファイルを編集して下記のように記載する。

      view_pdf_app/app/Http/Controllers/PdfController.php
      <?php
      
      namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      
      class PdfController extends Controller
      {
          /**
           * リダイレクトを用いてPDFを表示する
           *
           * @return redirect|file_url
           */
          public function showRedirect()
          {
              return redirect(asset('pdf/01_file.pdf'));
          }
      }
      
  4. ローカルサーバーを起動して下記にアクセスする。

  5. PDFファイルがブラウザで表示される。

方法2 storage_path()response()を用いる

  1. PDFファイルの設置
    1. 下記ディレクトリに「01_file.pdf」を設置する。(※ファイル名が同じPDFファイルなら内容は何でも良い。)
      1. view_pdf_app/storage/app/public/pdf/01_file.pdf
  2. ルーティングの記載

    1. ルーティングファイルを編集して下記のように記載する。

      view_pdf_app/routes/web.php
      <?php
      
      use Illuminate\Support\Facades\Route;
      use App\Http\Controllers\PdfController;
      
      /*
      |--------------------------------------------------------------------------
      | Web Routes
      |--------------------------------------------------------------------------
      |
      | Here is where you can register web routes for your application. These
      | routes are loaded by the RouteServiceProvider within a group which
      | contains the "web" middleware group. Now create something great!
      |
      */
      
      Route::get('/', function () {
          return view('welcome');
      });
      
      Route::get('/pdf/request', [PdfController::class, 'showRequest'])->name('pdf.show.request');
      
  3. コントローラーファイルの作成と記載

    1. 下記コマンドをview_pdf_appディレクトリで実行する。

      $ php artisan make:controller PdfController
      
    2. 作成したコントローラーファイルを編集して下記のように記載する。

      view_pdf_app/app/Http/Controllers/PdfController.php
      <?php
      
      namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      
      class PdfController extends Controller
      {
          /**
           * リクエストを用いてPDFを表示
           *
           * @return response
           */
          public function showRequest()
          {
              return response()->file(storage_path('app/public/pdf/01_file.pdf'));
          }
      }
      
  4. ローカルサーバーを起動して下記にアクセスする。

  5. PDFファイルがブラウザで表示される。

0
1
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
0
1