Если у вас есть базовый класс A
и производный класс B
, вы можете сделать следующее.
void wantAnA(A myA)
{
// work with myA
}
B derived;
// work with the object "derived"
wantAnA(derived);
Теперь для метода wantAnA
нужна копия derived
, Однако объект derived
не может быть полностью скопирован, так как класс B
может изобретать дополнительные переменные-члены, которые не находятся в его базовом классе A
.
Поэтому, чтобы вызвать wantAnA
, компилятор будет «срезать» все дополнительные члены производного класса. Результатом может быть объект, который вы не хотите создавать, потому что
A
(все особые поведения класс B
теряется). Вам нужно использовать протокол file:///
(да, это три слэша), если вы хотите подключиться к локальным файлам.
<a href="file:///C:\Programs\sort.mw">Link 1</a>
<a href="file:///C:\Videos\lecture.mp4">Link 2</a>
Они никогда не откроют файл в локальных приложениях автоматически. Это из соображений безопасности, и я доберусь до этого в последнем разделе. Если он откроется, он будет открыт только в браузере. Если это ваш браузер может отобразить файл, он будет. Если он не может, он, вероятно, спросит вас, хотите ли вы его загрузить.
Некоторые браузеры, такие как современные версии Chrome, даже откажутся переходить от протокола http к файловому протоколу, поэтому вы Лучше убедитесь, что вы открываете это локально, используя протокол файлов, если вы вообще хотите сделать это.
file:///
? Первая часть URL - это протокол. Протокол - это несколько букв, затем двоеточие и две слэши. HTTP://
и FTP://
являются действительными протоколами; C:/
нет, и я уверен, что он даже не похож на него.
C:/
также не является допустимым веб-адресом. Браузер мог предположить, что он предназначен для http://c/
с указанным пустым портом, но это не сработает.
Ваш браузер не может считать, что он ссылается на локальный файл. У этого нет оснований делать это предположение, потому что публичные сайты обычно не пытаются ссылаться на локальные файлы людей.
Итак, если вы хотите получить доступ к локальным файлам: скажите ему использовать протокол файлов.
Потому что это часть схемы [U1] файла URI . У вас есть возможность указать хост после первых двух косых черт. Если вы пропустите указание хоста, он просто предположит, что вы ссылаетесь на файл на своем ПК. Другими словами: file:///C:/etc
является ярлыком для file://localhost/C:/etc
.
Ваш браузер ответит на эти файлы одинаково как они будут реагировать на один и тот же файл в любом месте в Интернете. Эти файлы не будут открываться в вашем обработчике файлов по умолчанию (например, MS Word или VLC Media Player), и вы не сможете ничего сделать, как попросить «Проводник» открыть местоположение файла.
Это чрезвычайно хорошо для вашей безопасности.
Сайты в вашем браузере не могут очень хорошо взаимодействовать с вашей операционной системой. Если хороший сайт мог сказать lecture.mp4 , чтобы открыть в VLC.exe , вредоносный сайт мог бы сказать ему открыть virus.bat в cmd.exe . Или он может просто сказать вашему компьютеру запустить несколько файлов Uninstall.exe или открыть File Explorer миллион раз.
Это может быть не удобно для вас, но HTML и безопасность браузера не была действительно разработана для того, что вы делаете. Если вы хотите открыть lecture.mp4 в VLC.exe , подумайте над записью настольного приложения.
Janky в лучшем случае
<a href="file://///server/folders/x/x/filename.ext">right click </a></td>
, а затем щелкните правой кнопкой мыши, выберите опцию «копировать местоположение», а затем вставьте в url.
У меня есть способ и работаю следующим образом:
<'a href="FOLDER_PATH" target="_explorer.exe">Link Text<'/a>
Назад к 2017:
использовать URL.createObjectURL (файл) для создания локальной ссылки на файловую систему, которую пользователь выбирает;
не забыть для освобождения памяти с помощью URL.revokeObjectURL ()
Это работает в Chrome:
<a href="file:///\\\serverIP/directory/">Link Label</a>
Если вы используете IIS на своем ПК, вы можете добавить каталог, который вы пытаетесь найти в качестве виртуального каталога. Для этого вы щелкните правой кнопкой мыши на своем сайте в ISS и нажмите «Добавить виртуальный каталог». Назовите виртуальную папку. Укажите виртуальную папку в папку на локальном компьютере. Вы также должны предоставить учетные данные, которые имеют привилегии для доступа к определенной папке, например. HOSTNAME \ имя пользователя и пароль. После этого вы можете получить доступ к файлу в виртуальной папке как к любому другому файлу на вашем сайте.
http://sitename.com/virtual_folder_name/filename.fileextension
Кстати, это также работает с Chrome, который в противном случае не принимает файл файла протокола: //
Надеюсь, это поможет кому-то:)
Not allowed to load local resource
) – Loupax 24 March 2014 в 18:09