私は、ユーザーがパラメーターを入力し、データをさまざまなファイル形式 (xml、html (画面上)、csv など) で返すオプションがある Web サービスに取り組んでいます。
サーバーがファイルの内容を生成する (そのため、実際のファイルがない) 場合、ファイルへの URL を返すことはできません。では、これを行うにはどうすればよいでしょうか。要素内のデータがバイナリであることを示す xml 属性があることは知っていますが、ブラウザがデータをファイルとしてダウンロードすることはありません。
Content Disposition
XML/Web サービスに相当するものはありますか?
非常に関連するメモについて:
javascript/AJAX はブラウザをトリガーしてファイルをダウンロードできますか? jsだけではファイルを「生成」する機能がないことを知っています(ブラウザが特定のファイル名のファイルとして文字列をダウンロードするという意味で)が、ajax関数がスクリプトを呼び出し、スクリプトの応答がヘッダーはダウンロードするように設定されていますか?
私はその最後の部分で実験しますが、確かな情報がすでにそこにあるかどうか知りたい.
詳細:
まず、回答してくれたすべての人に感謝します。すべての回答は本当に役に立ち、教育的でした。
回答にまたがるすべてのコメント/懸念/提案を結び付けるために、状況についてもう少し説明しようとするかもしれないと思いました.
社内スタッフの Web サイトのプロジェクトを管理しています。このプロジェクトは、主にスケジュールの表示と変更を扱います。基本的に同じデータを MySQL DB に照会する、少なくとも 4 つの異なる PHP スクリプトがあります。クエリは、コンテキストによって若干異なります。あるケースでは、割り当てごとにグループ化された毎日のスケジュールを取得し、別のケースでは、1 週間のスケジュールを照会して人ごとにグループ化します。さらに別の例では、たった 1 人の人の週間スケジュールを照会します。1 人、1 日、またはポジションごとの時間ごとの合計などのデータを出力するものもあれば、DB に格納されているものだけを出力するものもあります。
私はプロジェクトの特定の側面について罪悪感を感じ始めました. 明らかに、多くのデータ フェッチを 1 つの組み込みスクリプトに組み合わせることができます。結果を処理するには、おそらくオブジェクト指向の PHP を使用する必要があります。そして、私は、データが安全でセキュアであること、および DB へのストレスが最小限に抑えられ、最適化されていることを確認するよりも、この混乱を機能させることに重点を置いてきました。クエリが最適化されているかどうかを本当に知る方法さえわかりません。
そして、上記の罪悪感に加えて、私は本当に混乱し始めました. 物事を整理しようとして、うまく機能していたものを1つの修正で台無しにする結び目に巻き込まれていることに気づきました。
そのため、プロセス全体を簡素化し、データのフェッチ方法に関するロジック (API でさえも) を強制する Web サービスを作成することが良い解決策であると考えました。最終的に私が主任開発者ではなくなったときに引き継ぎます。さらに、サイトのバックエンドのアップグレードとシフトの両方 (Cold Fusion を使用する Windows サーバー上にある日もあるかもしれませんが、私はその考えに身震いします) と、接続したい他のソフトウェアのために、全体の移植性を高めます。データベースと。
しかし、ここにこすりがあります:
このプロジェクトの全体的な起源は、以前のスケジューリング ソリューションが、私たちが使用する非常に高価なエンタープライズ レベルのスケジューリング ソフトウェアによって生成された、非常に醜く非意味的な HTML レポートをアップロードすることであったという事実に基づいていました。この忌まわしい HTML レポートとそれを生成したソフトウェアで私たちが抱えていた最大の.ics
問題は、Outlook や Google カレンダーにインポートできる「icalendar」ファイルのオプションがないことでした。私は、これらのひどいレポートを ics ファイルに変換する方法を見つけることを個人的な使命としており、PHP、正規表現、および MySQL を学び始めた理由についての話を始めました。
したがって、まだ退屈して眠っていない場合は、Web サービスがスケジュール プロセスを簡素化および合理化するための最良のオプションだと思いますが、データの最も価値のある部分を取得するために単純な PHP/MySQL を使用する必要がある場合(カレンダーファイル)それから私はすべてを捨てて、結び目を解き続けたいと思っています.
ところで、Web サービスを使用するスクリプトで ics ファイルを作成できることと、ユーザーが AJAX を要求している場合は AJAX を簡単に回避できることは理解しています。繰り返しますが、これをより明確にしてくれたすべての人に感謝します。HTML/JS/PHP とデータベースの間の明確なパーティションの感覚を持たせるために、Web サービスが DB によって返されたすべてを可能な限り処理することを望んでいます。
再度、感謝します!