Запись полного пути файла при его просмотре с использованием 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 1 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

Нет никакого способа сделать это, так как отображение контролируется браузерами. Некоторые браузеры будут отображать весь путь, в то время как другие будут отображать только имя файла.

Ответ 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