0

これが私が達成したいことです:

  • Windows Azure Blob Storage に保存されているファイルがあります (または、Web サーバー上になく、URL 経由でアクセスできる任意のファイル)。
  • 最初に Web サーバーに実際にファイルをダウンロードせずに、ファイルを強制的にダウンロードしたい。つまり、ブラウザはこの外部 URL からファイルを自動的に取得し、ユーザーにダウンロードを求めるプロンプトを表示する必要があります。

考えられる解決策:

これまでに私が調査したこと(およびそれらが機能しない理由)は次のとおりです。

  • FileContentResultここで説明されているようなものを使用して、ASP.NET MVC でファイルを表示/ダウンロードに戻し、ファイルをダウンロードします。このソリューションでは、サーバー上のコンテンツをフェッチしてから、サーバーからブラウザーにストリーミングする必要があります。このため、このソリューションは機能しません。
  • HTML 5download属性の使用: HTML 5download属性は問題なく機能しますが、問題は、これは非常に優れたソリューションですが、すべてのブラウザーでサポートされているわけではないということです。
  • ファイルのコンテンツ タイプの変更: ファイルのコンテンツ タイプ プロパティを、ブラウザーが理解できないものに変更して、ファイルのダウンロードを強制するために (少なくとも私が所有するファイルに対して) できるもう 1 つの方法です。これは一部のブラウザーで機能する可能性がありますが、IE はコンテンツ タイプを超えてファイルのコンテンツを確認してコンテンツ タイプを判断するほどスマートであるため、すべてのブラウザーで機能するわけではありません。さらに、ファイルを所有していない場合、ファイルのコンテンツ タイプを変更することはできません。

簡単に言えば、コントローラーのアクションでファイルの URL を指定できるはずであり、何らかの形でブラウザーがファイルを強制的にダウンロードする必要があります。

これは達成できるものですか?はいの場合、これを達成する方法はありますか?

4

2 に答える 2

2

簡単に言えば、コントローラーのアクションでファイルの URL を指定できるようにする必要があり、何らかの方法でブラウザーが [ファイルの URL をクライアントに公開せずに] ファイルを強制的にダウンロードする必要があります。

できません。最終的な URL を非表示のままにする場合、サーバーはデータを提供する必要があるため、サーバーは URL からファイルをダウンロードする必要があります。

クライアントは、URL を取得できないファイルをダウンロードできません。

于 2013-11-05T09:49:26.760 に答える
0

ファイル転送 WCF サービス (REST) を作成して、コンテンツを BLOB ストレージまたは他のソースから、ファイル マネージャーを介してクライアント ブラウザーに URL で直接ストリーミングできます。

https://{service}/FileTransfer/DownloadFile/{id、類義語、ファイル名など}

Blob パスは公開されず、Web アプリケーションはファイル転送の問題から解放されます。

于 2013-11-06T09:40:04.107 に答える