로컬에서 실행되는 웹 페이지에서 로컬 파일에 대한 링크를 만들려면 어떻게해야합니까?


155

하드 드라이브 전체에 흩어져있는 특정 파일을 구성하는 html 파일을 갖고 싶습니다. 예를 들어, 연결할 두 개의 파일이 있습니다.

  • 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>

...하지만 첫 번째 링크는 아무것도하지 않으며 두 번째 링크는 VLC가 아닌 Chrome에서 파일을 엽니 다.

내 질문은 :

  1. 링크를 파일 바로 가기로 취급하도록 HTML을 조정하는 방법이 있습니까?

  2. HTML을 조정할 수있는 방법이 없다면 하드 드라이브에 흩어져있는 파일에 깔끔하게 연결하는 다른 방법이 있습니까?

내 컴퓨터는 Windows 7을 실행하고 웹 브라우저는 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 프로토콜에서 파일 프로토콜로의 교차를 거부합니다. 이 작업을 수행하려면 파일 프로토콜을 사용하여 웹 페이지를 로컬로 열어야합니다.

왜없이 붙어 file:///있습니까?

URL의 첫 부분은 프로토콜입니다. 프로토콜은 몇 글자, 콜론과 두 개의 슬래시입니다. HTTP://FTP://유효 프로토콜이다; C:/아니고 나는 그것이 제대로 닮지 않았다고 확신합니다.

C:/또한 유효한 웹 주소가 아닙니다. 브라우저는 그것이 의도 된 것으로 가정 할 수 있습니다http://c/ 는 빈 포트가 지정 있지만 실패합니다.

브라우저가 로컬 파일을 참조한다고 가정하지 않을 수 있습니다. 공용 사이트는 일반적으로 사람들의 로컬 파일에 연결하려고 시도하지 않기 때문에 이러한 가정을 할 이유가 거의 없습니다.

따라서 로컬 파일에 액세스하려면 파일 프로토콜을 사용하도록 지시하십시오.

왜 세 개의 슬래시?

File URI 스킴 의 일부이기 때문 입니다. 처음 두 슬래시 다음에 호스트를 지정할 수 있습니다. 호스트 지정을 건너 뛰면 PC에서 파일을 참조한다고 가정합니다. 이는 file:///C:/etc바로 가기를 의미 합니다 file://localhost/C:/etc.

이 파일들은 여전히 ​​브라우저에서 열리 며

브라우저는 인터넷 어디에서나 동일한 파일에 응답하는 것과 동일한 방식으로이 파일에 응답합니다. 이러한 파일 기본 파일 처리기 (예 : MS Word 또는 VLC Media Player)에서 열리지 않으며 파일 탐색기에 파일 위치를 열도록 요청하는 등의 작업을 수행 할 수 .

이것은 보안에 매우 좋습니다.

브라우저의 사이트는 운영 체제와 잘 상호 작용할 수 없습니다. 좋은 사이트 오픈에 컴퓨터를 말할 수 있다면 lecture.mp4 에서 VLC.exe , 악의적 인 사이트 오픈에 말할 수 virus.bat 에서 cmd.exe를 . 또는 컴퓨터에 몇 개의 Uninstall.exe 파일 을 실행 하거나 파일 탐색기를 백만 번 열도록 지시 할 수 있습니다 .

이 방법은 편리하지 않을 수 있지만 HTML 및 브라우저 보안은 실제로 수행중인 작업에 맞게 설계되지 않았습니다. 당신이 열 수 있도록하려면 lecture.mp4 에서 VLC.exe 대신 데스크톱 응용 프로그램을 작성하는 것이 좋습니다.


1
고마워 조나단. 대안으로 "파일을 폴더에 표시"하는 방법이 있는지 알고 있습니까?
Brian Fitzpatrick

7
@Brian 브라우저는 그런 식으로 OS와 상호 작용할 수 없으므로 매우 기뻐해야합니다.
doppelgreener

23
어쨌든 Chrome이 file : /// 프로토콜을 사용하여 로컬 파일을 다운로드하지 않는 것 같습니다 ( Not allowed to load local resource오류가 발생 함)
Loupax

1
이 "file : /// .. \ .. \ sort.mw"와 같은 링크를 제공하여 두 개의 폴더로 돌아가서 파일을 가져옵니다. 우리는 dropbox에서 단어 파일을 사용하고 있기 때문에. 어떤 해결책이 있습니까?
Murtaza Munshi

5
웹 사이트 (예 : 로컬 개발자 서버)에서 로컬 파일로 링크 할 수 없다는 점도 언급 할 가치가 있습니다. forums.mozillazine.org/viewtopic.php?f=9&t=1730
nuala

14

PC에서 IIS를 실행중인 경우 가상 디렉터리로 연결하려는 디렉터리를 추가 할 수 있습니다. 이를 위해 ISS에서 사이트를 마우스 오른쪽 버튼으로 클릭하고 "가상 디렉토리 추가"를 누르십시오. 가상 폴더의 이름을 지정하십시오. 가상 폴더가 로컬 PC의 폴더 위치를 가리 킵니다. 또한 특정 폴더에 액세스 할 수있는 권한이있는 자격 증명을 제공해야합니다 (예 : HOSTNAME \ 사용자 이름 및 비밀번호. 그런 다음 사이트의 다른 파일과 같이 가상 폴더의 파일에 액세스 할 수 있습니다.

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

그런데 이것은 파일 프로토콜 file : //을 허용하지 않는 Chrome에서도 작동합니다.

희망이 누군가에게 도움이되기를 바랍니다 :)


대답 해줘서 고마워요! 파일 경로 앞에 file : ///을 넣었지만 클릭하면 아무 일도 일어나지 않습니다. Ctrl (새 탭에서)으로 열어야합니다. 왜 그래야만하지?
Piotr Czyż

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을 사용하여 탭에서 파일을여십시오.
Tony Lugg

0

나는 방법이 있고 다음과 같이 작동합니다.

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

Internet Explorer에서도 유효한 대상 값처럼 보이지 않습니다 .
doppelgreener

IE는 (위의) (잘못된) 대상을 무시합니다. 다음은 IE10, 11에서 잘 작동합니다. <a href="C:/tmp"> 드라이브 C의 tmp에 링크합니다. </a>
primehunter

IE와 FOLDER_PATH 대신 'file : // servername / path \ to \ folder'와 같은 네트워크 드라이브 경로를 사용하면 나에게 잘 작동합니다. 'target = "_ explorer.exe"'를 생략하면 explorer.exe 대신 IE에서 폴더가 열리고 탐색기와 매우 비슷합니다.
JonP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.