2

大きなファイルのダウンロード(ブラウザがビデオの再生やテキストファイルの表示を試みないという意味でのダウンロード)を許可するWebサイトを作成しようとしています。ユーザーにファイルの保存場所を選択させたい)ASP.NET v4およびIIS7では、しかし、私はこれに関していくつかの問題に直面しており、率直に言って私を悩ませています。

今、私はhttp:http://www.cnblogs.com/bestcomy/archive/2004/08/10/31950.aspxを介して非常に大きなファイルをストリーミングする方法を提供するWebサイトを見つけました

ただし、このソースの問題は、このファイルのダウンロード中にhttpに他のリクエストを送信できないことです。したがって、ユーザーが一度に複数のファイルをダウンロードしようとした場合、最初のリクエストが完了するまでそこに留まります。

非常に大きなメディアベースのファイルダウンロードを実行する方法はありますか?これにより、ユーザーは一度に複数のファイルをダウンロードでき、右クリックして名前を付けて保存するのではなく、保存する場所を選択する必要がありますか?

編集:これを拡張するために、ダウンロードはセッションページ(ユーザーがログインしている)の背後にあるため、許可されていないユーザーがファイルをダウンロードするのを防ぐことができます(匿名によるセキュリティはセキュリティではありません:P)。とにかく、新しいブラウザセッションを開いて、ログインして別のファイル(または同じファイルでも)をダウンロードできますが、それ以上のリクエストはそこにあり、ダウンロードが完了するまで「ロード」されます。

別の編集:何かが変わる場合は、RazorMVCフレームワークを使用しています

ありがとう!

4

2 に答える 2

2

IIS からファイル ハンドラーを削除すると、ファイルが開かれるのではなく、ダウンロードされるようになると思います。私はこれを自分で試したことはありませんが、これでうまくいくはずです。 http://technet.microsoft.com/en-us/library/cc771240(v=ws.10).aspx

于 2012-09-10T23:48:27.390 に答える
1

もう少しコンテキストがあれば、これはかなり単純化できると思います。

同時ダウンロードを許可するには、セッションが読み取り専用であることを確認する必要があります。[SessionState(SessionStateBehavior.ReadOnly)]MVC3では、カスタム セキュリティ チェックのために、コントローラを で装飾します。Authorizeさて、あなたの実装はわかりませんが、セキュリティは通常、属性などを使用して処理されることを考慮してください。

ここで、デフォルトでファイルを開くのではなく、強制的にファイルを保存するプロンプトを表示するには、次の投稿で Darin の回答を確認してください: https://stackoverflow.com/a/5830215/1373170

FileResult標準がニーズに合っている場合は、カスタム コードを使用してファイルをダウンロードする必要はありません。

于 2012-09-11T00:19:43.487 に答える