Hoe kan ik een link naar een lokaal bestand maken op een lokaal uitgevoerde webpagina?

Ik wil graag een html-bestand hebben dat bepaalde bestanden op mijn harde schijf ordent. Ik heb bijvoorbeeld twee bestanden waarnaar ik zou linken:

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

Het probleem is dat ik zou willen dat de links als een snelkoppeling naar het bestand fungeren. Ik heb het volgende geprobeerd:

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

… maar de eerste link doet niets en de tweede link opent het bestand in Chrome, niet in VLC.

Mijn vragen zijn:

  1. Is er een manier om mijn HTML aan te passen om de links te behandelen als snelkoppelingen naar de bestanden?

  2. Als er geen manier is om de HTML aan te passen, zijn er dan andere manieren om netjes te linken naar bestanden verspreid over de harde schijf?

Mijn computer draait Windows 7 en mijn webbrowser is Chrome.


Antwoord 1, autoriteit 100%

Je moet het file:///protocol gebruiken (ja, dat zijn drie schuine strepen) als je naar lokale bestanden wilt linken.

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

Deze zullen het bestand nooit automatisch openen in uw lokale applicaties.Dat is om veiligheidsredenen die ik in de laatste sectie zal behandelen. Als het wordt geopend, wordt het alleen in de browser geopend. Als uw browser het bestand kan weergeven, zal hij dat doen, anders zal hij u waarschijnlijk vragen of u het bestand wilt downloaden.

Je kunt niet oversteken van http(s) naar het bestandsprotocol

Moderne versies van veel browsers (bijv. Firefox en Chrome) weigeren over te stappen van het http(s)-protocol naar het bestandsprotocol om kwaadaardig gedrag te voorkomen.

Dit betekent dat een webpagina die ergens op een website wordt gehost, nooit naar bestanden op uw harde schijf kan linken. Je moet je webpagina lokaal openen met het bestandsprotocol als je dit überhaupt wilt doen.

Waarom loopt het vast zonder file:///?

Het eerste deel van een URLis het protocol. Een protocol bestaat uit een paar letters, dan een dubbele punt en twee schuine strepen. HTTP://en FTP://zijn geldige protocollen; C:/is dat niet en ik ben er vrij zeker van dat het er niet eens echt op lijkt.

C:/is ook geen geldig webadres. De browser zou kunnen aannemen dat het de bedoeling is http://c/te zijn met een lege poort gespecificeerd, maar dat gaat niet lukken.

Je browser gaat er misschien niet vanuit dat het verwijst naar een lokaal bestand. Er is weinig reden om die veronderstelling te maken, omdat webpagina’s over het algemeen niet proberen te linken naar de lokale bestanden van mensen.

Dus als je toegang wilt tot lokale bestanden: vertel het om het bestandsprotocol te gebruiken.

Waarom drie schuine strepen?

Omdat het deel uitmaakt van het Bestands-URI-schema. U heeft de mogelijkheid om een host op te geven na de eerste twee schuine strepen. Als u het specificeren van een host overslaat, gaat het er gewoon van uit dat u verwijst naar een bestand op uw eigen pc. Dit betekent dat file:///C:/etceen snelkoppeling is voor file://localhost/C:/etc.

Deze bestanden worden nog steeds geopend in uw browser en dat is goed

Uw browser reageert op deze bestanden op dezelfde manier als op hetzelfde bestand waar dan ook op internet. Deze bestanden willen nietopenen in uw standaard bestandshandler (bijv. MS Word of VLC Media Player), en u zal nietiets kunnen doen zoals Verkenner vragen om de de locatie van het bestand.

Dit is buitengewoon goed voor uw veiligheid.

Sites in uw browser kunnen niet goed communiceren met uw besturingssysteem. Als een goede site uw computer zou kunnen vertellen om lecture.mp4te openen in VLC.exe, zou een kwaadwillende site uw computer kunnen vertellen om virus.batte openen in CMD.exe. Of het kan uw computer vertellen om een paar Uninstall.exe-bestanden uit te voeren of Verkenner een miljoen keer te openen.

Dit is misschien niet handig voor u, maar HTML- en browserbeveiliging zijn niet echt ontworpen voor wat u doet. Als je lecture.mp4in VLC.exewilt kunnen openen, overweeg dan om een desktoptoepassing te schrijven.


Antwoord 2, autoriteit 5%

Als u IIS op uw pc gebruikt, kunt u de map die u probeert te bereiken toevoegen als een virtuele map.
Om dit te doen, klikt u met de rechtermuisknop op uw site in ISS en drukt u op “Virtuele map toevoegen”.
Geef de virtuele map een naam. Wijs de virtuele map naar uw maplocatie op uw lokale pc.
U moet ook inloggegevens opgeven die privileges hebben om toegang te krijgen tot de specifieke map, bijvoorbeeld. HOSTNAME\gebruikersnaam en wachtwoord.
Daarna kunt u het bestand in de virtuele map openen zoals elk ander bestand op uw site.

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

Trouwens, dit werkt ook met Chrome dat anders het bestandsprotocol file://

. niet accepteert

Ik hoop dat dit iemand helpt 🙂


Antwoord 3, autoriteit 2%

Janky op zijn best

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

en klik vervolgens met de rechtermuisknop, selecteer de optie “locatie kopiëren” en plak het in de url.


Antwoord 4

terug naar 2017:

gebruik URL.createObjectURL( file)om een lokale link te maken naar het bestandssysteem dat de gebruiker selecteert;

vergeet niet geheugen vrij te maken door de URL te gebruiken. revokeObjectURL()


Antwoord 5

Ik heb een manier en werk als volgt:

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

Other episodes