やりたいこと
laravelでhtmlファイルを作成、編集できるcms的なものを作成しており、
xxxx/storage/app/files/html/index.html
上のような形でstorageにディレクトリを作成し、作成したhtmlを保存していくような形にしたのですが、
このhtmlのプレビューをブラウザで表示したいです。
知りたいこと
下記実装で、表示はできたのですが、
htmlと同じくstorage/files配下に保存しているcss, js, 画像などの外部ファイルが
当然ですが読み込めません。(パス等はpreview用に書き換える処理を挟んでいます。)
controller
1public function __construct(){ 2 $this->middleware('auth'); 3} 4 5public function preview(){ 6 $path = storage_path("app/files/html/index.html"); 7 if($file_exists($path) && is_file($path)){ 8 return response()->file($path); 9 }else{ 10 return view("404"); 11 } 12}
そこでpublicに一時的に下記のようなpreview用のディレクトリを用意して、そのパスをコントローラーに渡し、プレビュー用のウィンドウを閉じたら一時ディレクトリごと削除するような形で考えたのですが、
storage/app/publicに置くと、閲覧権限がなくてもパスがわかれば閲覧できてしまうため、
できれば一時的であってもpublicに置きたくありません。
publicに置かなくてもcss等を外部ファイルとして読み込み、正確なプレビューを表示できる方法があれば知りたいです。
storage/app ├── public ├── preview ├── index.html ├── css │ ├── style.css │ ├── img │ ├── item.jpg │ ├── js
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/07 03:46
2019/02/07 14:14