web-dev-qa-db-ja.com

ローカルで実行されているWebページにローカルファイルへのリンクを作成する方法を教えてください。

私のハードドライブに散らばっている特定のファイルを整理するHTMLファイルが欲しいのですが。たとえば、リンクするファイルが2つあります。

  • C:\Programs\sort.mw
  • C:\Videos\lecture.mp4

問題は、リンクをファイルへのショートカットとして機能させることです。私は以下を試しました:

<a href="C:\Programs\sort.mw">Link 1</a>
<a href="C:\Videos\lecture.mp4">Link 2</a>

...しかし、最初のリンクは何もせず、2番目のリンクはVLCではなくChromeでファイルを開きます。

私の質問は:

  1. リンクをファイルへのショートカットとして扱うようにHTMLを調整する方法はありますか?

  2. HTMLを調整する方法がない場合、ハードドライブに散らばっているファイルにきちんとリンクする他の方法はありますか?

私のコンピュータはWindows 7を実行し、私のウェブブラウザはChromeです。

140

ローカルファイルにリンクする場合は、file:///プロトコル(はい、3つのスラッシュ)を使用する必要があります。

<a href="file:///C:\Programs\sort.mw">Link 1</a>
<a href="file:///C:\Videos\lecture.mp4">Link 2</a>

これらは、ローカルアプリケーションでファイルを自動的に開くことはありません。これはセキュリティ上の理由で、最後のセクションで説明します。開いた場合、ブラウザでのみ開きます。ブラウザがファイルを表示できる場合は表示されますが、そうでない場合はおそらくファイルをダウンロードするかどうかを尋ねられます。

Chromeの最新バージョンのような一部のブラウザーは、httpプロトコルからファイルプロトコルへの切り替えを拒否することもあります。

file:///なしでスタックするのはなぜですか?

RLの最初の部分 はプロトコルです。プロトコルは数文字で、コロンと2つのスラッシュです。 HTTP://およびFTP://は有効なプロトコルです。 C:/はそうではなく、適切に似てさえいないと確信しています。

C:/も有効なWebアドレスではありません。ブラウザーは、http://c/であると想定され、空のポートが指定されていますが、それは失敗します。

ご使用のブラウザは、ローカルファイルを参照していると想定しない場合があります。通常、公開サイトは人々のローカルファイルへのリンクを試みないため、そのような仮定を立てる理由はほとんどありません。

したがって、ローカルファイルにアクセスする場合は、ファイルプロトコルを使用するように指示します。

なぜ3つのスラッシュがあるのですか?

ファイルURIスキーム の一部であるため。最初の2つのスラッシュの後にホストを指定するオプションがあります。ホストの指定をスキップすると、自分のPC上のファイルを参照していると見なされます。つまり、file:///C:/etcfile://localhost/C:/etcのショートカットです。

これらのファイルは引き続きブラウザで開きますが、それは良いことです

ブラウザは、インターネット上の同じファイルに応答するのと同じ方法でこれらのファイルに応答します。これらのファイルはデフォルトのファイルハンドラー(MS WordまたはVLC Media Playerなど)で開かないため、次のようなことはできませんファイルエクスプローラーにファイルの場所を開くように依頼します。

これはあなたのセキュリティにとって非常に良いことです。

ブラウザのサイトは、オペレーティングシステムとうまくやり取りできません。良いサイトがlecture.mp4VLC.exeに開くようにマシンに指示できる場合、悪意のあるサイトvirus.batCMD.exeで開くように指示できます。または、マシンにいくつかのUninstall.exeファイルを実行するか、ファイルエクスプローラーを100万回開くように指示することもできます。

これはあなたにとって便利ではないかもしれませんが、HTMLとブラウザのセキュリティはあなたがしていることのために本当に設計されていません。 lecture.mp4VLC.exeで開くことができるようにするには、代わりにデスクトップアプリケーションの作成を検討してください。

240
doppelgreener

PCでIISを実行している場合は、到達しようとしているディレクトリを仮想ディレクトリとして追加できます。これを行うには、ISS内のサイトを右クリックして[仮想ディレクトリの追加]を押します。仮想フォルダに名前を付けます。仮想フォルダをローカルPCのフォルダの場所に向けます。また、特定のフォルダにアクセスする権限を持つ資格情報を入力する必要があります。 HOSTNAME \ユーザー名とパスワード。その後、あなたはあなたのサイト上の他のファイルと同じように仮想フォルダ内のファイルにアクセスすることができます。

http://sitename.com/virtual_folder_name/filename.fileextension

ちなみに、これはChromeでも動作します。それ以外の場合はファイルプロトコルファイルを受け入れません。

これが誰かに役立つことを願っています:)

12
user3507261

せいぜいジャンキー

<a href="file://///server/folders/x/x/filename.ext">right click </a></td>

それから右クリックして、 "コピー場所"オプションを選択してから、URLに貼り付けます。

6
Chet Meinzer

2017年に戻る:

URL.createObjectURL(file) を使用して、ユーザーが選択したファイルシステムへのローカルリンクを作成します。

URL.revokeObjectURL()を使用してメモリを解放するのを忘れないでください

0
pery mimon

私はこのような方法と仕事をしています:

<'a href="FOLDER_PATH" target="_Explorer.exe">Link Text<'/a>
0
Maciej