ローカルで実行されているWebページにローカルファイルへのリンクを作成するにはどうすればよいですか?


155

ハードドライブ全体に散らばっている特定のファイルを整理する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を実行しており、私のWebブラウザーはChromeです。

回答:


259

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

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

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

多くのブラウザー(FirefoxやChromeなど)の最新バージョンは、悪意のある動作を防ぐために、httpプロトコルからファイルプロトコルへの移行を拒否します。これを行う場合は、ファイルプロトコルを使用してローカルでWebページを開く必要があります。

なぜそれがなければ行き詰まるのfile:///ですか?

URLの最初の部分はプロトコルです。プロトコルは、数文字の後に、コロンと2つのスラッシュです。HTTP://およびFTP://有効なプロトコルです。C:/そうではなく、きちんと1つに似ていないと私はかなり確信しています。

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

ブラウザは、ローカルファイルを参照していると想定しない場合があります。パブリックサイトは通常、ユーザーのローカルファイルへのリンクを試みないため、この仮定を行う理由はほとんどありません。

ローカルファイルにアクセスする場合は、ファイルプロトコルを使用するように伝えます。

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

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

これらのファイルは引き続きブラウザで開きます。

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

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

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

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


1
ジョナサン、ありがとう。代わりに「フォルダー内のファイルを表示する」方法があるかどうか知っていますか?
ブライアンフィッツパトリック2013

7
@ブライアンお使いのブラウザーはこの方法でOSと対話することができません。
doppelgreener 2013

23
とにかく、Chromeがfile:///プロトコルを使用してローカルファイルをダウンロードしないようです(Not allowed to load local resourceエラーが表示されます)
Loupax

1
この「file:/// .. \ .. \ sort.mw」のようなリンクを付けて、2つのフォルダに戻り、そこにファイルを取得したいと考えています。Dropboxで単語ファイルを使用しているためです。だから解決策はありますか?
Murtaza Munshi、2015年

5
また、Webサイト(ローカル開発サーバーなど)からローカルファイルにリンクできないことにも言及する価値があります。forums.mozillazine.org/viewtopic.php?f=9&t=1730
nuala

14

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

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

ちなみに、これは、ファイルプロトコルfile://を受け入れないChromeでも機能します。

これが誰かを助けることを願っています:)


ご回答ありがとうございます!ファイルへのパスの前にfile:///を置いていますが、クリックしても何も起こりません。(新しいタブで)Ctrlで開く必要があります。なぜそうなのですか?
PiotrCzyż2015

5

せいぜい

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

次に、右クリックして「場所をコピー」オプションを選択し、URLに貼り付けます。


右クリックを余儀なくされていますか?それを左クリックする方法はありますか?
Bandoleras

1

2017年に戻る:

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

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


ここでのファイル引数には、ブラウザークライアントのJSランタイム内に構築された実際のファイルオブジェクトが必要です。つまり、ファイルアップロードフォームコントロールなどを介してブラウザークライアントにすでにアップロードしている必要があります。生成されるURLは、ブラウザークライアントのJSランタイム内のメモリに保存されているコピーをダウンロードまたは参照するためのblob URLです。これは、ローカルファイルへのリンクの作成には役立ちません。これは、メモリに保存されているコピーへのリンクです(それ以外の場合は、アクセスしようとすると別の動作をしません)。
doppelgreener

まさに私が必要としたもの。ファイル入力を使用してファイルを選択し、createObjectURLを使用してタブで開きます。
トニーラグ

0

私は方法があり、このように動作します:

<'a href="FOLDER_PATH" target="_explorer.exe">Link Text<'/a>

Internet Explorerでも、これは有効なターゲット値のようには見えません。
doppelgreener

IEは(無効な)ターゲット(上記)を無視します。以下は、IE10、11で正常に機能します。<a href="C:/tmp">ドライブCのtmpへのリンク</a>
プライムハンター

IEと、FOLDER_PATHの代わりに「file:// servername / path \ to \ folder」のようなネットワークドライブパスを使用すると、うまく機能します。'target = "_ explorer.exe"'を省略した場合、フォルダーはexplorer.exeの代わりにIEで開き、explorerによく似ています。
JonP 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.