web-dev-qa-db-fra.com

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

Je voudrais avoir un fichier HTML qui organise certains fichiers dispersé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 deuxième lien ouvre le fichier dans Chrome, pas VLC.

Mes questions sont:

  1. Existe-t-il un moyen d’ajuster mon code HTML pour traiter les liens comme des raccourcis vers les fichiers?

  2. S'il n'existe aucun moyen de régler le code HTML, existe-t-il d'autres moyens de créer des liens ordonnés avec des fichiers dispersés sur le disque dur?

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

136
Brian Fitzpatrick

Vous devez utiliser le protocole file:/// (oui, c'est trois barres obliques) si vous souhaitez 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>

_ {Cela n'ouvrira jamais automatiquement le fichier dans vos applications locales.} C'est pour des raisons de sécurité que je traiterai 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 souhaitez télécharger le fichier.

Certains navigateurs, comme les versions modernes de Chrome, refusent même de passer du protocole http au protocole de fichier. Vous devez donc vous assurer de l'ouvrir localement à l'aide du protocole de fichier si vous souhaitez effectuer ce travail.

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

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

C:/ n'est pas non plus une adresse Web valide. Le navigateur peut supposer qu'il est censé être http://c/ avec un port vide spécifié, mais cela va échouer.

Votre navigateur ne peut pas supposer qu'il fait référence à un fichier local. Cette hypothèse n’a guère de raison de se tenir, car les sites publics ne tentent généralement pas de faire un lien vers les fichiers locaux des utilisateurs.

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

Pourquoi trois barres obliques?

Parce que cela fait partie du schéma Fichier URI . Vous avez la possibilité de spécifier un hôte après les deux premières barres obliques. Si vous omettez de spécifier un hôte, vous supposerez que vous faites référence à un fichier sur votre propre PC. Cela signifie que file:///C:/etc est un raccourci pour file://localhost/C:/etc.

Ces fichiers vont toujours s'ouvrir dans votre navigateur et c'est bien

Votre navigateur répondra à ces fichiers de la même manière qu’ils répondraient au même fichier n’importe où sur Internet. Ces fichiers ne sera pas ouverts dans votre gestionnaire de fichiers par défaut (par exemple, MS Word ou VLC Media Player), et vous ne serez pas pouvez faire quoi que ce soit, comme demander à l’explorateur de fichiers d’ouvrir le dossier .

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

Les sites de votre navigateur ne peuvent pas très bien interagir avec votre système d'exploitation. Si un bon site pouvait dire à votre ordinateur d'ouvrir lecture.mp4 dans in VLC.exe, un site malveillant pourrait lui indiquer d'ouvrir virus.bat dans CMD.exe . Vous pouvez également demander à votre ordinateur d’exécuter quelques fichiers Uninstall.exe ou d’ouvrir l’explorateur de fichiers un million de fois.

Cela peut ne pas vous convenir, mais la sécurité du HTML et du navigateur n’a pas été conçue pour ce que vous faites. Si vous voulez pouvoir ouvrir lecture.mp4 dans VLC.exe, envisagez plutôt d'écrire une application de bureau.

226
doppelgreener

Si vous exécutez 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 appuyez sur "Ajouter un répertoire virtuel" . Nommez le dossier virtuel. Pointez le dossier virtuel sur l'emplacement de votre dossier sur votre PC local . Vous devez également fournir des informations d'identification disposant des privilèges nécessaires pour accéder au dossier spécifique, par exemple. HOSTNAME\nom d'utilisateur et mot de passe . Après cela, vous pouvez accéder au fichier du dossier virtuel comme à tout autre fichier de votre site.

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

À propos, cela fonctionne aussi avec Chrome qui, autrement, n'accepte pas le fichier de protocole de fichier: //

J'espère que ça aide quelqu'un :)

12
user3507261

Janky au mieux

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

puis faites un clic droit, sélectionnez l'option "Copier l'emplacement", puis collez-la dans l'URL.

5
Chet Meinzer

retour à 2017:

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

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

0
pery mimon

J'ai un moyen et travaille comme ça:

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