Я разработал веб-приложение Java EE. Это приложение позволяет пользователю загружать файл с помощью браузера. После того, как пользователь загрузил свой файл, это приложение сначала сохраняет загруженный файл на сервере (на котором он запущен), а затем обрабатывает его.
В настоящее время я храню файл на сервере следующим образом:
try {
    // formFile represents the uploaded file
    FormFile formFile = programForm.getTheFile();
    String path = getServlet().getServletContext().getRealPath("") + "/"
        + formFile.getFileName();
    System.out.println(path);
    file = new File(path);
    outputStream = new FileOutputStream(file);
    outputStream.write(formFile.getFileData());
}
 где formFile представляет загруженный файл.
Теперь проблема в том, что он работает на некоторых серверах, но на некоторых серверах getServlet().getServletContext().getRealPath("") возвращает null, поэтому последний путь, который я получаю, null/filename, и файл не сохраняется на сервер.
Когда я проверил API для ServletContext.getRealPath(), я обнаружил следующее:
public java.lang.String getRealPath(java.lang.String path)Возвращает строку, содержащую реальный путь для данного виртуального пути. Например, путь
"/index.html"возвращает абсолютный путь к файлу на файловой системе сервера, будет обслуживаться запросом для"http://host/contextPath/index.html", где contextPath - это путь контекста этого ServletContext.Возвращенный реальный путь будет в форме, соответствующей компьютеру и операционной системе, на которой запущен контейнер сервлета, включая соответствующие разделители путей. Этот метод возвращает null, если контейнер сервлета не может перевести виртуальный путь на реальный путь по какой-либо причине (например, когда контент становится доступным из архива .war).
Итак, есть ли другой способ, с помощью которого я могу хранить файлы на тех серверах, которые возвращают null для getServlet().getServletContext().getRealPath("")
