Почему управление Html Audio не работает в html, если оно обслуживается, а не обрабатывается как обычный файл - PullRequest
0 голосов
/ 15 мая 2018

У меня есть Java-приложение, которое может работать как обычное Java-приложение Swing, но создает стандартный отчет html5, который открывается в веб-браузере.

* 1003 например *

URL-адрес браузера:

Файл: /// C: /Users/Paul/AppData/Roaming/SongKong/Reports/FixSongsReport00574/FixSongsReport00574.html

В качестве части этого он использует звуковую метку, позволяющую воспроизводить песню в браузере

    <h5>
        <audio controls="controls">
            <source src="file:/E:/Test4/test.WAV">
        </audio>
    </h5>

и это прекрасно работает.

Но приложение также может работать с Html-интерфейсом пользователя, затем оно запускает веб-сервер, используя Java Spark на порту 4567, если затем я работаю с точно таким же отчетом (да, на самом деле я обслуживаю файлы одинаково файлы на диске) на тот же компьютер, поэтому аудиофайл является локальным для компьютера, и он больше не будет воспроизводить песню.

Это будет URL-адрес браузера

http://localhost:4567/FixSongsReport00574/FixSongsReport00574.html

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

Но в случае необходимости это метод запуска java-spark

    CustomJettyServerFactory customJettyServerFactory = new CustomJettyServerFactory();
    EmbeddedServers.add(
            EmbeddedServers.Identifiers.JETTY,
            new EmbeddedJettyFactory(customJettyServerFactory));

    staticFiles.externalLocation(Platform.getPlatformReportFolder().getPath());
    staticFiles.location("");
    staticFiles.expireTime(600);

    SongKong.songKong.setRemote(true);

    StartPage.recreateIndexPage();
    init();
    configureWebEndPoints();
    configureApiWebEndPoints();

    before((request, response) -> {
      MainWindow.logger.severe(">>>>>"+request.uri());
    });

    listenForFinish();

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

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Из соображений безопасности нельзя смешивать HTTP-сервер и файловые протоколы в один. Итак, что вам нужно сделать ниже

При обслуживании любого html-файла прочитайте его содержимое и замените file:/ на что-то вроде /localfile?url=

И затем вам нужно будет создать конечную точку /localfile в коде вашего встроенного сервера, которая будет читать URL-адрес, а затем передавать файл локально. Код вашего сервера сможет получить доступ к локальному файлу и транслировать его.

Раньше во времена FF11 было немного методов, но они больше не действительны

Как просмотреть файл: // изображения с http://localhost обслуживаемых страниц в Firefox 11?

0 голосов
/ 15 мая 2018

попробуйте это, я надеюсь, это поможет вам

Как?Чтобы ваша веб-страница воспроизводила музыку, HTML-код может быть простым:

<audio src="the location of the music url" controls> </audio>

пример

<audio controls>
    <source src="/assets_tutorials/media/Loreena_Mckennitt_Snow_56bit.mp3" type="audio/mpeg">
    <source src="/assets_tutorials/media/Loreena_Mckennitt_Snow_56bit.ogg" type="audio/ogg">
    Your browser does not support the audio tag.
</audio>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...