質問するログイン新規登録
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

Q&A

解決済

2回答

1675閲覧

csvファイルダウンロードの設計について

tt02

総合スコア36

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

0グッド

0クリップ

投稿2022/02/07 07:08

0

0

webアプリからcsvファイルのダウンロードのロジック
(一時保存型と直接出力ダウンロード型のメリットとデメリット)
Webを調べてもわからないため、どうぞ、助けていただけますと幸いです。

dbの内容をcsvファイルでダウンロードするアプリケーションの設計についてです。

■一時ファイルを作成するタイプ。
参考サイト
https://b-risk.jp/blog/2020/10/csv_download/
上記のサイトのようにサーバー上にcsvファイルを生成し、それをダウンロードするタイプのものも多くあります。

上記のサイトはシンプルなものですが、このタイプ実装だと次の処理をイメージしています。

1:dbの内容をcsvファイルで非公開領域に保存。
※複数ユーザーからの同時処理に備えて、ファイル名はランダムな文字列として生成する。
2:1で生成したcsvファイルをcsvファイル用のヘッダーをつけて、そしてわかりやすいファイ名でクライアントに送る。
3:サーバー内のcsvファイルのうち不要となったものを削除。
という流れになるかと思います。

一方で、
■直接出力するタイプ。
https://bazuo.hatenadiary.org/entry/20101001/1285916733
上記のサイトにあるように、サーバー内にcsvファイルを作ることなく、
ダイレクトにcsv出力される方もおられます。

この場合ですと、
・非公開領域の作成は不要
・ランダムファイル名の作成も不要。
・サーバー内の不要なファイルの削除もいらない。

などが特徴と思います。こちらの方法が優れているように感じます。

もし、直接出力することを極力さけて実装される方がいらっしゃいましたら、その理由をお知らせいただければ、とても助かります。どうぞよろしくお願いします。
言語はphpです。

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

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

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

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

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

guest

回答2

0

自己解決

複数の仕様のアプリを比較検討した結果、現在の所、次のような設計とした。
○サーバーにcsvを作成する方法
・同じ内容のcsvが何度も生成される可能性がある(teratail_begin様の回答)
・帳票などをhtml上で出力するデータと同一のデータで、csvがほしい時。(時間が経過するとデータが変わってしまうため)かつ、そのhtmlを出力する際に取得したデータを使ってcsvファイルを生成したい時。

○直接送りだす方法
・ダウンロードボタンを押下した瞬間のデータが必要な時。

投稿2022/02/20 13:35

tt02

総合スコア36

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

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

0

同じ内容のcsvが何度も生成される可能性があるなら、キャッシュ代わりにサーバ内にいったん作成したほうが効率いいでしょう。

そうではなく毎回一意の内容なら、直接送り出すほうがいいでしょう。

投稿2022/02/07 09:02

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tt02

2022/02/20 13:26

ご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問