проблема в доступе к содержимому файла с использованием JavaScript с tomcat - PullRequest
0 голосов
/ 28 мая 2019

Следующий код находится внутри <script> тега index.html моего приложения и работает нормально (в основном код находится внутри функции, которая вызывается, когда пользователь нажимает кнопку загрузки из пользовательского интерфейса; файлы уже присутствует на сервере / в указанном ниже месте), когда я получаю доступ к своему приложению через веб-браузер следующим образом:

file:///C:/jack/testing/ui/static/index.html

Работая, я имею в виду, я вижу, как загружаются 3 файла в формате csv размером 3 КБ.

const requests = [
  'file1_1555077233.csv',
  'file2_1555077233.csv',
  'file3_1555077233.csv'
].map(file => {
  return fetch('file:///C:/jack/file/JACK/' + file)
    .then(response => response.text())
    .catch(console.error)
})

Promise.all(requests)
  .then(contents => {
    const zip = new JSZip()

    contents.forEach((content, index) => {
      zip.file(`file-${index}.csv`, content)
    })

    return zip.generateAsync({ type: 'blob' })
  })
  .then(blob => {
    saveAs(blob, 'files.zip')
  })

Сценарий 1:

Однако, когда мое приложение развернуто как файл WAR в tomcat, я получаю доступ к своему приложению следующим образом из веб-браузера:

 http://localhost:8080/testing/index.html

В этом случае приведенный выше JavaScript не работает полностью. Я имею в виду, он загружает 3 файла, но размер файла пуст. Это имеет смысл, так как я захожу на сайт через HTTP и мои файлы должен обслуживаться сервером.

В Windows как мне изменить эту строку кода return fetch('file:///C:/jack/file/JACK/' + file), чтобы она начала работать в этом сценарии.

Сценарий 2:

Аналогичным образом, когда я развернул WAR-файл в tomcat, работающем на сервере RHEL, я получаю доступ к своему приложению следующим образом:

https://myserver.com/testing/index/html 

В этом сценарии я также заметил, что пустые файлы загружаются, когда я использовал приведенный выше код с этим изменением:

  return fetch('/srv/users/JACK' + file)

Scenario #1 просто используется для моего локального тестирования, и это нормально, если он не работает для меня, потому что я понимаю, что я не могу получить доступ к файлам из моего локального каталога. Однако в Scenario 2 на сервере RHEL я пытаюсь получить доступ к файлам из каталога srv/users/JACK, который не является локальным или специфичным для какого-либо пользователя. Почему я все еще вижу, как загружаются 3 пустых CSV-файла в этом сценарии? Пожалуйста, посоветуйте, как лучше поступить, чтобы преодолеть этот сценарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...