Обнаружить/найти *.pdf на сервере (с php?) и передать его в файл .js

avatar
netrunner
9 августа 2021 в 06:08
120
1
0

Я новичок в javascript. У меня есть файл .js (работающий на веб-сервере) с двумя параметрами:


defaultUrl: {
    value: "filename.pdf",
    kind: OptionKind.VIEWER
  }, 

и вместо имени filaname.pdf я бы хотел, чтобы он обнаруживал любой файл .pdf в текущей рабочей папке (всегда будет один, но каждый раз с другим именем файла) и возвращал его имя здесь

Файл находится на общедоступном веб-хостинге, поэтому я, вероятно, смогу запустить код .php, чтобы найти имя файла

изменить:

// If absolute URL from the remote server is provided, configure the CORS
// header on that server.
var url = 'https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/examples/learning/helloworld.pdf';

// Loaded via <script> tag, create shortcut to access PDF.js exports.
var pdfjsLib = window['pdfjs-dist/build/pdf'];

// The workerSrc property shall be specified.
pdfjsLib.GlobalWorkerOptions.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.js';

// Asynchronous download of PDF
var loadingTask = pdfjsLib.getDocument(url);
loadingTask.promise.then(function(pdf) {
  console.log('PDF loaded');
Источник
Michel
9 августа 2021 в 06:27
3

Ваш вопрос не ясен. Вы хотите заменить имя файла при загрузке страницы или после загрузки страницы?

Ответы (1)

avatar
digijay
9 августа 2021 в 06:47
1

Предположим, что у вас есть следующая структура каталогов:

$ tree test
test
├── test-find-pdf.php
└── test.pdf

0 directories, 2 files

Затем вы можете получить все файлы PDF в текущем рабочем каталоге, используя glob(). Чтобы вернуть имя первого найденного pdf-файла, измените свой php-скрипт следующим образом:

<?php
    # file test-find-pdf.php

    $allPdfFiles = glob("*.pdf");
    echo $allPdfFiles[0];
?>

Таким образом, вы можете вызвать его из своего javascript с помощью XMLHttpRequest (он же запрос Ajax) следующим образом:

<script>
var request = new XMLHttpRequest();
request.open("GET","test-find-pdf.php");
request.addEventListener('load', function(event) {
   if (request.status >= 200 && request.status < 300) {
      console.log(request.responseText);
   } else {
      console.warn(request.statusText, request.responseText);
   }
});
request.send();
</script>

Поэтому при загрузке вашего html-документа Ajax возвращает результат php-файла и выводит его на консоль F12 в вашем браузере. Оттуда вам нужно найти способ назначить его вашему объекту json.

Убедитесь, что путь к вашему файлу php в request.open() указан правильно.

Дополнительную информацию о glob() можно найти в руководстве по php.

netrunner
9 августа 2021 в 08:03
0

Хорошо, у меня запущен php, и он показывает массив, но у меня возникают проблемы с вставкой его в значение URL-адреса по умолчанию. должно быть так: ``` defaultUrl: { value: $allPdfFiles[0], kind: OptionKind.VIEWER }, ```

digijay
9 августа 2021 в 08:09
0

Я только что отредактировал свой ответ, включив в него простой пример ванильного XMLHttpRequest для получения результата файла php в javascript. Это также можно сделать с помощью библиотеки, например, например. jQuery.

netrunner
9 августа 2021 в 08:39
0

Еще раз спасибо, у меня работает php, и $allPdfFiles[0] правильный, но все еще возникают проблемы с его назначением в файле .js :/

digijay
9 августа 2021 в 08:45
0

не могли бы вы отредактировать свой вопрос, включив в него фрагмент javascript?

netrunner
9 августа 2021 в 19:32
0

Это часть файла просмотра pdf.js (viewer.js)

netrunner
10 августа 2021 в 13:15
1

Решил это, заставив сервер анализировать файлы .js для php и поместив php-код в файл .js. Тем не менее, спасибо, ваш ответ помог!