Запись полного пути файла при его просмотре с использованием php
До сих пор я писал script, чтобы я мог просматривать файл и видеть напечатанное имя файла. Вот script:
<form action="upload.php" method="post" enctype="multipart/form- data">
Select:
<input type="file" name="fileToUpload" id="fileToUpload">
</form>
Когда я нажимаю кнопку обзора и выбираю файл, на моей веб-странице печатается только имя файла (мой веб-браузер - Firefox, и я использую локальный сервер). Есть ли способ распечатать весь адрес файла? То, что я нашел в Интернете до сих пор, в основном предполагало способы, когда мы заранее знаем "/path/to/file". Но как это можно сделать, если я случайно выбираю файл? Если нет способа сделать это с PHP из-за проблем с безопасностью в соответствии с:
Как получить полный путь к выбранному файлу при изменении типа < input type = 'file > используя javascript, jquery-ajax?,
Возможно ли это сделать с помощью C, С++, html и т.д.
Мне действительно нужно показать локальный путь каталога. Каковы альтернативы? Ответ: нельзя ли это сделать? Я нашел этот сайт http://www.htaccesstools.com/articles/full-path-to-file-using-php/
Не знаю, как это работает.
Другой альтернативой было бы определить фиксированный путь и позволить пользователю выбирать только этот каталог, и, поскольку он известен, я могу его распечатать. Имеет ли смысл?
Ответы
Ответ 1
Старые браузеры использовали неограниченный доступ к полному пути, поэтому это не невозможно, но из-за проблем с безопасностью ваш лучший ответ будет обходным путем.
Internet Explorer
Применение HTA
Если вы работаете локально, одним из вариантов является то, что вы можете запускать свою страницу как приложение HTML. К сожалению, это использует Internet Explorer как движок. Но если вы можете уйти с HTA, это делает то, что вы хотите:
<!--test.hta-->
<HTML>
<HEAD>
<HTA:APPLICATION ID="testFile" BORDER="thick" BORDERSTYLE="complex"/>
<TITLE>HTA - Test file</TITLE>
</HEAD>
<BODY>
<input type="file" onchange="alert(this.value)">
</BODY>
</HTML>
Надежный сайт
Гораздо лучший вариант - просто использовать Internet Explorer, а затем добавить свою страницу на доверенные сайты Internet Explorer. Тогда ваше решение будет таким же простым, как:
<input type="file" id="fileUpload" onchange="alert(this.value)">
Здесь, как добавить сайт на свои надежные сайты:
![step 2]()
Пользовательский уровень безопасности
Вы также можете включить это поведение в глобальном масштабе для Internet Explorer:
![method 2]()
Firefox
У Firefox, похоже, нет поддержки для захвата полного URL-адреса. Но, как упоминалось здесь, похоже, существует свойство mozFullPath:
https://developer.mozilla.org/en-US/docs/Web/API/File/mozFullPath
Я попробовал это в своем браузере, и это кажется несуществующим свойством. Я не могу найти никакой документации о том, как воспользоваться этим свойством. Но это свойство следить за тем, если оно когда-нибудь станет полезным.
HTML5
В HTML5 вы можете написать this.files[0]
для ссылки на объект File. Свойства включают "имя" и "lastModifiedDate", "размер" и "тип", как указано здесь:
https://developer.mozilla.org/en-US/docs/Web/API/File
В HTML5 вы можете работать с blobs и создавать URL-адрес объекта из выбранного файла и показывать предварительный просмотр. Это можно сделать с помощью URL.createObjectURL(...), после чего создайте изображение и настройте его src
на полученный временный url. См. эта скрипка. < кредит идет на этот пост)
Наконец, вам может понравиться:
https://blueimp.github.io/jQuery-File-Upload/
Ответ 2
Нет никакого способа сделать это, так как отображение контролируется браузерами. Некоторые браузеры будут отображать весь путь, в то время как другие будут отображать только имя файла.
Ответ 3
Вы можете сделать это из соображений безопасности. Javascript не имеет разрешения на доступ к файловой системе, посмотрите на этот ответ: Как получить полный путь к выбранному файлу при изменении типа < input type = 'file > используя javascript, jquery-ajax?
Ответ 4
Я попал по той же проблеме, но не в тех же обстоятельствах. Только IE10 дал мне полный путь, а firefox (и, вероятно, все остальные) - нет. В моем случае я использую сервер с php, поэтому я прошу пользователя выбрать файл и загрузить его на сервер, чтобы использовать его, как мне нужно. Надеюсь, это помогло.
Ответ 5
Кажется, вам нужен полный путь к файлу.
Пожалуйста, попробуйте использовать: __FILE__
Ответ 6
Используя JavaScript и скрытое поле, вы можете сделать это:
$('#someHiddenField').val( $('#myFileField').val() );
но имейте в виду, что не все браузеры возвращают полный путь (в частности, FF возвращает только имя файла).
Ответ 7
Получение полного пути клиентского файла к серверному серверу - это то, что предоставляет доступ к файловой системе на стороне клиента. Это недопустимо, потому что существует несколько причин безопасности.
Ответ 8
Вам нужно изменить настройки своего браузера, а затем вы можете получить доступ к относительному пути вашего файла.
Chrome вы получите реальный путь, используя this.files [0].webkitRelativePath
FirFox вы сможете использовать this.files [0].mozFullPath