4

ファイル サーバーからドキュメント フォルダーを開くリンクが必要な Web アプリケーションに取り組んでいます。フォルダーは、新しいブラウザー タブまたは新しいウィンドウで開くか、コンピューターの既定のファイル ブラウザー プログラム (つまり、Windows エクスプローラー) を使用して開くことができます。このJavaScriptはトリックを行う必要があります:

window.open('file://///fileserver.companyname/public/Documents/','_blank);

このhtmlも機能するはずです:

<a href="file://///fileserver.companyname/public/Documents/">Open Documents</a>

ただし、これらはどちらも Internet Explorer でのみ機能し、ユーザーは常に Firefox と Chrome を使用しています。明らかに、Firefox と Chrome のデフォルトのセキュリティ設定では、「http://」Web サイトからリクエストが呼び出されたときに「file://」を開くことができません。

このページへの参照をいくつか見ました: Links to local pages do not workでは、Firefox を使用して Web ページからファイルを開くことができない理由を説明し、いくつかの回避策を提供しています。残念ながら、2 つのオプションしか提供されていません。各ブラウザー インスタンスにプラグインをインストールするか、各ブラウザー インスタンスにユーザー設定ファイルを作成するかです。ユーザーが多すぎるため、これらのオプションはどちらも受け入れられません。私が働いている会社は、このリンクにアクセスする必要がある各マシンに何も適用するつもりはありません。それとは別に、プラグインと設定ファイルの両方をとにかく試してみましたが、うまくいったのは IE Tab プラグインだけでした。LocalLinks が機能しなかった理由は、ファイルではなくフォルダーを開こうとしているからだと思います。

このスタックオーバーフローの質問では、Chrome の同様のオプションについて説明しています: Google Chrome でローカル リンクを開くことはできますか? 繰り返しますが、LocalLinks プラグインは私には機能せず、プラグインは受け入れられません。

また、Chrome で開いているファイルの上にコマンド ライン引数を使用することを提案している Web サイト ( http://www.askyb.com/chrome/open-local-file-in-google-chrome/ ) と、その方法を示した Web サイトも見つけました。引数を自動的に適用します(https://askubuntu.com/questions/160245/making-google-chrome-option-allow-file-access-from-files-permanent)が、正しく読んでも変更を適用する必要があります当社のウェブサイトにアクセスするすべてのコンピューター。

プラグインをインストールしたり、個々のコンピューターに設定ファイルを追加したりせずに、 Firefox と Chromeの両方で完全にプログラムによって、つまり Web アプリケーションの C# または Javascript コード内でファイル フォルダーを開く方法はありますか? これらのビジネス要件を変更することはできません。

Sidenote : MVC 4 で C# を使用しています。C# でコントローラー アクションを使用してフォルダーを開くことをお勧めします (フォルダーがまだ存在しない場合は、フォルダーを開く前に作成したいため)。クライアント側は許容されます。Internet Explorer の場合、MVC C# コントローラーに組み込まれている JavaScript( ... ) 関数でラップすることにより、C# コードでその JavaScript を作成できます。Firefox と Chrome で IE Tabs をテストするとき、ウィンドウを開く関数ではなく、href リンクとして定義する必要がありました。そうしないと、IE Tabs がそれをリンクとして認識しませんでした。しかし、これらはいずれも、当社のビジネス ニーズに対応できる回避策ではありませんでした。

4

2 に答える 2

2

実行可能な解決策を思い付く前にリクエストは取り下げられましたが、他の誰かがまだこの問題に苦しんでいる場合に備えて、ワークステーションのカスタマイズを必要としない回避策について説明します.

技術的には、組み込みのファイル エクスプローラーを使用してフォルダーを開く必要はありません。代わりに、ブラウザーのセキュリティ ルールに違反することなくビジネスが必要とする情報を表示するための創造的な方法は、ファイル エクスプローラーを開かずにファイルを反復処理し、フォルダー/ファイルのリストをブラウザー ウィンドウに表示することです。

Directory.EnumerateDirectories(filepath)Directory.EnumerateFiles(filepath)を使用すると、表示するフォルダーとファイルのリストを取得できます。ユーザーがいずれかのフォルダーをクリックすると、これらのメソッドが再度呼び出され、次のレベルのフォルダーとファイル名が取得されます。ユーザーがファイルをクリックすると、ダウンロード/開きます。これらのメソッドは、フォルダー名とファイル名を文字列のリストとして返すため、ブラウザーでカスタム アイコンを使用してリストをレンダリングするだけで済みます。(メソッドは C# の System.IO ライブラリからのものです。)

于 2014-11-16T22:00:26.307 に答える
0

簡単なhtmlコードは次のとおりです。

<input type="file" webkitdirectory>

しかし、このコードの問題は、Google でしか機能しないことです!

于 2014-04-09T14:56:59.583 に答える