PHP в Javascript: dirname и document_root

У меня есть небольшая проблема. Я работаю над проектом, и я получил свой рут, затем я получил 2 папки: website1 а также website2,

website1 это панель персонала, где включен скрипт выгрузки (где эта проблема). website2 это сайт, который увидит "клиент". Здесь загружены все загруженные изображения, PDF-файлы и т. Д.

Итак, у меня есть несколько заметок, прежде чем я начну:

  1. Я не могу использовать PHP в моем Javascript. Javascript находится в файлах.js, а не в моем.php.
  2. Я не могу сделать это по моему AJAX-запросу, поскольку что-то на стороне клиента должно быть сделано правильно, чтобы увидеть изображение.

В общем, я в website1 и когда я загружаю файл (с DropzoneJS ( http://www.dropzonejs.com/)), он выполняет запрос AJAX. Здесь он должен загрузить файл в каталог в website2, В website1 Я должен увидеть это изображение после загрузки его в тег IMG.

Итак, в PHP я получил это:

$uploadPath = filter_input(INPUT_POST, 'uploadPath');
$uploadPath = dirname(getenv('DOCUMENT_ROOT')) . '/' . $uploadPath;

Это работает, и файл загружается в этот каталог. $uploadPath это (в Javascript, отправленный как параметр POST в запросе AJAX):

/SITE2/assets/uploads/

Теперь мне нужно перевести dirname а также getenv('DOCUMENT_ROOT') в Javascript. Я старался document.location.hostname но это возвращает другое значение, чем getenv('DOCUMENT_ROOT'),

document.location.hostname: 127.0.0.1getenv('DOCUMENT_ROOT'): D: / xampp / htdocs

Как я могу получить то же значение, что и getenv('DOCUMENT_ROOT') в JavaScript

3 ответа

В php файле вы можете создать скрипт с переменной JavaScript следующим образом:

<script>
var DOCUMENT_ROOT = "<?= getenv('DOCUMENT_ROOT') ?>";
</script>

другой вариант - иметь ваш JavaScript-файл в виде PHP-скрипта, тогда вы можете использовать PHP-код внутри.

У вас есть два варианта, но я предупреждаю, что отправка фактического пути к файлу на сервере / диске клиентской стороне - плохая идея.

  1. Используйте Ajax, чтобы клиент отправлял запрос как $.ajax({url: "getdir.php", success: someJSFuntion } );
  2. Измените ваш файл JavaScript на файл ".php", а затем включите код прямо там.

Нет спецификаций, в которых говорится, что ваш JS-файл не может быть файлом ".php". Таким образом, вы бы ссылку на него, как это:

<script type="text/javascript" src="/js/myjs.php"></script>

И это позволит вам использовать PHP непосредственно в вашем файле JS.

Проверьте php.js для порта JavaScript dirname...

Что касается getenv('DOCUMENT_ROOT')Вы не можете получить значение этой переменной через JavaScript. Причиной этого является "местоположение" файла JavaScript на стороне клиента, которое ничего не говорит о его фактическом расположении на сервере. Лучшее, что вы можете сделать, - это получить родительский каталог файла или имя домена.

Например:

http://example.com/path/to/file

"DOCUMENT_ROOT", что касается JavaScript, это...

/path/to

Кажется очень неправильным даже предполагать необходимость иметь доступное на стороне сервера расположение файла для JavaScript. Я бы просто использовал конкретный URL-запрос, который указывает, какое местоположение использовать, или чтобы отправить местоположение обратно с ответом AJAX, поскольку вы можете добавить туда все, что вам нужно.

{
    "document-root": "/SITE2/assets/uploads/",

    "normal-response": {
        ...
    }
}

И тогда везде, где вы обычно используете то, что обычно получается, это использование...

// For example
var response = JSON.parse (request.responseText);

// Normal response
console.log (response['normal-response'][...]);

// Document Root
console.log (response['document-root']);
Другие вопросы по тегам