199 votes

Comment créer un lien vers un fichier local sur une page Web exécutée localement ?

J'aimerais avoir un fichier html qui organise certains fichiers éparpillés sur mon disque dur. Par exemple, j'ai deux fichiers vers lesquels je voudrais créer un lien :

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

Le problème est que je voudrais que les liens fonctionnent comme un raccourci vers le fichier. J'ai essayé ce qui suit :

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

... mais le premier lien ne fait rien et le second lien ouvre le fichier dans Chrome, pas dans VLC.

Mes questions sont les suivantes :

  1. Y a-t-il un moyen d'ajuster mon HTML pour que les liens soient traités comme des raccourcis vers les fichiers ?

  2. S'il n'est pas possible d'ajuster le HTML, existe-t-il d'autres moyens de créer des liens vers des fichiers éparpillés sur le disque dur ?

Mon ordinateur fonctionne sous Windows 7 et mon navigateur web est Chrome.

328voto

doppelgreener Points 2857

Vous devez utiliser le file:/// (oui, il y a trois barres obliques) si vous voulez créer un lien vers des fichiers locaux.

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

Ceux-ci n'ouvriront jamais automatiquement le fichier dans vos applications locales. C'est pour des raisons de sécurité que je vais aborder dans la dernière section. S'il s'ouvre, il ne s'ouvrira jamais que dans le navigateur. Si votre navigateur peut afficher le fichier, il le fera, sinon il vous demandera probablement si vous voulez télécharger le fichier.

Vous ne pouvez pas passer du protocole http(s) au protocole de fichier.

Les versions modernes de nombreux navigateurs (par exemple Firefox et Chrome) refusent de passer du protocole http(s) au protocole de fichier pour éviter tout comportement malveillant.

Cela signifie qu'une page web hébergée sur un site web quelque part ne sera jamais en mesure d'établir un lien avec des fichiers sur votre disque dur. Vous devrez ouvrir votre page web localement en utilisant le protocole de fichier si vous voulez faire ce genre de choses.

Pourquoi cela reste-t-il bloqué sans file:/// ?

La première partie d'une URL est le protocole. Un protocole est composé de quelques lettres, puis de deux points et de deux barres obliques. HTTP:// y FTP:// sont des protocoles valides ; C:/ ne l'est pas et je suis presque sûr qu'il n'y ressemble pas vraiment.

C:/ n'est pas non plus une adresse web valide. Le navigateur pourrait supposer que c'est censé être http://c/ avec un port vide spécifié, mais ça va échouer.

Votre navigateur peut ne pas supposer qu'il s'agit d'un fichier local. Il a peu de raisons de le faire, car les pages Web n'essaient généralement pas de créer des liens vers les fichiers locaux des utilisateurs.

Donc, si vous voulez accéder à des fichiers locaux, dites-lui d'utiliser le protocole de fichier.

Pourquoi trois barres obliques ?

Parce que ça fait partie de la Schéma URI du fichier . Vous avez la possibilité de spécifier un hôte après les deux premiers slashs. Si vous ne spécifiez pas d'hôte, le système supposera que vous vous référez à un fichier sur votre propre PC. Cela signifie que file:///C:/etc est un raccourci pour file://localhost/C:/etc .

Ces fichiers s'ouvriront toujours dans votre navigateur, ce qui est une bonne chose.

Votre navigateur répondra à ces fichiers de la même manière que s'il s'agissait du même fichier n'importe où sur Internet. Ces fichiers ne sera pas ouvert dans votre gestionnaire de fichiers par défaut (par exemple MS Word ou VLC Media Player), et vous ne sera pas être capable de faire quelque chose comme demander à l'explorateur de fichiers d'ouvrir l'emplacement du fichier.

C'est une très bonne chose pour votre sécurité.

Les sites dans votre navigateur ne peuvent pas interagir très bien avec votre système d'exploitation. Si un bon site pouvait dire à votre machine d'ouvrir conférence.mp4 en VLC.exe un site malveillant pourrait lui demander d'ouvrir virus.bat en CMD.exe . Ou il pourrait juste dire à votre machine d'exécuter quelques Désinstaller.exe ou ouvrir l'explorateur de fichiers un million de fois.

Ce n'est peut-être pas pratique pour vous, mais le HTML et la sécurité du navigateur n'ont pas vraiment été conçus pour ce que vous faites. Si vous voulez être capable d'ouvrir conférence.mp4 en VLC.exe envisagez plutôt d'écrire une application de bureau.

15voto

user3507261 Points 151

Si vous utilisez IIS sur votre PC, vous pouvez ajouter le répertoire que vous essayez d'atteindre en tant que répertoire virtuel. Pour ce faire, cliquez avec le bouton droit de la souris sur votre site dans ISS et cliquez sur "Ajouter un répertoire virtuel". Nommez le dossier virtuel. Faites pointer le dossier virtuel vers l'emplacement de votre dossier sur votre PC local. Vous devez également fournir des informations d'identification qui ont des privilèges pour accéder au dossier spécifique, par exemple HOSTNAME. \username et le mot de passe. Ensuite, vous pouvez accéder au fichier dans le dossier virtuel comme à tout autre fichier sur votre site.

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

À propos, cela fonctionne également avec Chrome qui, autrement, n'accepte pas le protocole de fichier file://.

J'espère que cela aidera quelqu'un :)

6voto

Chet Meinzer Points 187

Au mieux, janky

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

puis cliquez avec le bouton droit, sélectionnez l'option "copier l'emplacement", puis collez dans l'url.

4voto

pery mimon Points 2013

Retour à 2017 :

utiliser URL.createObjectURL( fichier ) pour créer un lien local vers le système de fichiers que l'utilisateur a sélectionné ;

n'oubliez pas de libérer de la mémoire en utilisant URL.revokeObjectURL()

-1voto

Maciej Points 27

J'ai un moyen et un travail comme ça :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X