3

アップロードされたドキュメント用の CakePHP アプリケーションにドキュメント ビューアーを含めたいと考えています。Microsoft Word (.DOC および .DOCX)、Microsoft PowerPoint (.PPT および .PPTX)、および Adob​​e Portable Document Format (.PDF) をサポートするビューアが必要です。

ユーザーがドキュメントを表示できるようにしたいのですが、ダウンロードはできません。Google ドキュメント ビューアーは優れていますが、ユーザーは URL をアドレス バーに挿入してドキュメントをダウンロードするだけです。

読み取り可能なドキュメントと同じように、ドキュメントをユーザーと共有できる方法はありますか?

4

2 に答える 2

5

まず、ユーザーのブラウザがファイルやコンテンツを表示するとき、それはすでにユーザーのマシン上にあることを理解する必要があります。すでにダウンロードされています。「コンテンツはサーバーに残りますが、ユーザーはそれを見ることができます」という魔法はありません。データは常にサーバーからユーザーに転送され、ユーザーは自分のマシンにデータを残すことができます。

これを理解していれば、いくつかのオプションがあります。

  • ユーザーがファイルを持っているかどうかは気にしません。これは最も健全なオプションです。他のすべての方法は、ユーザーが嫌うある種の「DRM」です。
  • ユーザーに表示されるデータをブラウザのみに転送します。
    • ユーザーが見ているドキュメントの部分の画像を生成し、それをブラウザに送信します。ユーザーにはテキスト データがなく、すべてのドキュメントをダウンロードするには多くのリクエストを行う必要があります。
    • 暗号化されたドキュメントをサーバーから読み取り、暗号化を解除して (ユーザーのマシン上で - つまり、ユーザーはそれをのぞき見できることを意味します)、それを表示するブラウザー プラグイン (java、flash、javascript) を作成します。この方法では、ユーザーは単にドキュメントを取得するだけでなく、解読する必要があります。

ダウンロード オプションを無効にしてスライド共有プレゼンテーションを埋め込むなど、既存のソリューションがあります。特に、サポートと継続的な機能強化で長い道のりを歩みたくない場合は、独自のものを発明しようとしないでください。

于 2011-06-14T11:16:49.283 に答える
1

私はグーグルドキュメントビューアを使用して次のガイドラインに固執します。

  • ドキュメントのランダムなURLアドレスを毎回生成します(サーバー側のスクリプトとhtaccessを使用します。PHPとhtaccessを使用しています)。これにより、誰もがファイルに直接アクセスできるようにはなりません。
  • 日時を(サーバー文字列エンコードスクリプトを使用して)URLでエンコードし、ファイルに特定の時間(たとえば、5分間)だけアクセスできるようにします。
  • Googleドキュメントビューアのユーザーエージェントを照合することによってのみファイルを出力します。これにより、ブラウザにそのアドレスを入力した場合でも、Googleドキュメントビューアにそのファイルへのアクセスのみが許可され、他のユーザーにはアクセスできなくなります。

これはまだ非常に安全な方法ではありませんが、私にとってはトリックです。

于 2011-11-03T15:37:54.640 に答える