Загрузка файла, Spring MVC + CloudBees

Я работал на локальном сервере Tomcat, и теперь я только что развернул свое приложение в CloudBees. Все отлично работает, кроме загрузки файла в каталог сервера.

У меня есть такой кусок кода в моем контроллере, который работал у меня на локальном хосте:

@RequestMapping("/main/admin/upload")
public ModelAndView fileUploaded(
        @ModelAttribute("uploadedFile") FileUpload uploadedFile,
        final HttpServletRequest request,
        final HttpServletResponse response, BindingResult result) {

    InputStream inputStream = null;
    OutputStream outputStream = null;
    String pdfDirectory = uploadedFile.getPdfDirectory();
    MultipartFile file = uploadedFile.getFile();
    String fileName = file.getOriginalFilename();

    try {
        inputStream = file.getInputStream();

        String pdfFileDirectory = request.getSession().getServletContext()
                .getRealPath("/")
                + "resources\\pdf\\" + pdfDirectory + "\\";
        File newFile = new File(pdfFileDirectory + fileName);
        if (!newFile.exists()) {
            newFile.createNewFile();
        }
        outputStream = new FileOutputStream(newFile);
        int read = 0;
        byte[] bytes = new byte[1024];

        while ((read = inputStream.read(bytes)) != -1) {
            outputStream.write(bytes, 0, read);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

    return new ModelAndView("redirect:/main/admin");
}

Я не уверен, что эта строка работает правильно:

request.getSession().getServletContext().getRealPath("/")

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


person Piotr Sagalara    schedule 05.02.2014    source источник
comment
Я обнаружил одну вещь... строка, в которой я не был уверен, работает ли она, возвращает это: /mnt/genapp/apps/7c7c897e/staxcat/install/webapp.war/resources/pdf/Facebook/ Есть ли способ добавить файл в приложение, извлеченное в файл войны?   -  person Piotr Sagalara    schedule 06.02.2014


Ответы (1)


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

Приложение, которое повторно развертывается или масштабируется, запускается на отдельном узле, поэтому вам не следует хранить там файлы. Мы рекомендуем хранить с помощью amazon S3 (или аналогичного хранилища файлов) и использовать локальную («эфемерную») файловую систему в качестве временного кеша.

Вы можете использовать System.getProperty("java.io.tempDir") для получения настроенного локального временного файла.

CloudBees также предоставляет два разных примера, которые могут помочь вам загружать файлы в Amazon S3 — вы также можете использовать Dropbox, Google Drive и т. д.

Подробнее здесь .

person felix    schedule 06.02.2014