Откройте прямой файл на жестком диске из Firefox (файл:///)
У меня есть небольшая система php, которую я создал для себя. Эта система содержит несколько файлов документов.doc и.docx. Я хочу иметь возможность открывать их прямо из браузера, а не загружать их.
Я создал ссылку: <a href="file:///c:/mysite/myfile.docx">myfile</a>
Но FireFox не открывает ссылку. В то время как href="http://localhost/myfile.docx"
работает отлично - он предлагает мне скачать файл.
Любые идеи, как я могу это сделать? Может быть, что-то изменить в настройках / настройках firfox? И если вы на это, есть ли шанс сделать это в IE8?
Благодарю.
6 ответов
Хотя я все еще думаю, что это вопрос программирования, на него ответили здесь: https://superuser.com/questions/103026/open-a-direct-file-on-the-hard-drive-from-firefox-file
И Firefox, и IE8 поддерживают схему File URI.
Вот некоторые примеры, действительные для систем Windows, ссылающиеся на тот же файл c:\WINDOWS\clock.avi
Файл: // локальный / с |/WINDOWS/clock.avi
Файл: /// C |/WINDOWS/clock.avi
Файл: // локальный / с:/WINDOWS/clock.avi
Файл: /// C:/WINDOWS/clock.aviХотя последний является наиболее очевидным и понятным для человека, первый является наиболее полным и правильным.
Видимо (из того же URL):
Браузеры Mozilla отказываются следить за URL-адресами файлов на странице, которую он получил по протоколу HTTP.
но:
Браузеры Mozilla могут быть настроены так, чтобы переопределять это ограничение безопасности, как подробно описано в Mozillazine " Ссылки на локальные страницы не работают".
К сожалению, доступ к локальным файлам в Firefox невозможен из-за ограничений безопасности. Насколько я знаю (я сам неоднократно спрашивал здесь), даже невозможно разрешить выбор сайтов с помощью параметра конфигурации или подобного.
Существует обходной путь (небезопасный и небезопасный, с которым нужно обращаться осторожно), вы можете зарегистрировать собственный протокол, как описано в этом вопросе.
Какой синтаксис вы использовали? Правильный синтаксис, например, для c:/path/to/file.ext
был бы file:///c:/path/to/file.ext
, Изменить: больше не актуально, так как ОП отредактировал свой вопрос, включив в него синтаксис.
Обратите внимание, что это не работает вообще, если файл хранится на сервере, который, в свою очередь, физически отличается от компьютера клиента (на котором работает веб-браузер).
Я использовал symlink для Windows, добавил этот файл в мою папку ресурсов, создав символическую ссылку. Как создать символическую ссылку, показанную здесь для окон http://www.sevenforums.com/tutorials/278262-mklink-create-use-links-windows.html
Это сработало для меня, пока та же проблема. Ура!
Мой рабочий код для открытия локально загруженных файлов через Firefox (51.0) и реальный Internet Explorer (11).
$pfad = trim(strip_tags(stripslashes(urldecode($_REQUEST['pfad']))));
$datei = trim(strip_tags(stripslashes(urldecode($_REQUEST['file']))));
exec ('start c:\\WINDOWS\\system32\\explorer.exe /select /seperate /n, /e, '.str_replace('/','\\',$pfad).utf8_decode($datei));
сохранен как open.php
"pfad" - это путь НИЖЕ локального Webroot (в моем случае папка клиента), а "file" - это, конечно, файл, который я хочу открыть.
Я называю это так: ...href="open.php? Pfad =
где оба параметра имеют urlencoded
Ограничения безопасности являются большой проблемой при попытке получить доступ к файлу за пределами вашего проекта. Я бы порекомендовал (если вы используете IIS 7+), чтобы создать виртуальный каталог в папке, содержащей ваши документы на диске C. Затем вы можете получить доступ к своим файлам с диска C, используя имя VP, и хост / localhost будет включен в ваш URL, а не в "file:///"
,
Однако если вы используете IIS Express, вам придется вручную добавить виртуальный каталог, обновив "applicationhost.config"
файл. Посмотрите на эту ссылку для более подробной информации о том, как ее настроить.
http://bhagirath-j-patel.blogspot.com/
Надеюсь это поможет.