2016-07-16 3 views
0

У меня есть приложение Spring MVC с AngularJS. Для интерфейсов, развернутых на AWS Elastic Beanstalk.Приложение Spring MVC Хранилище изображений

Я Занесение изображений путем создания каталога в приложении пример:

@RequestMapping(value="/upload_image", method=RequestMethod.POST) 
    public @ResponseBody JsonResponse handleFileUpload(@RequestParam("file") MultipartFile file, @RequestParam("filename") String filename){ 
     if (!file.isEmpty()) { 
      try { 
       String orgName =file.getOriginalFilename(); 
       String filePath = "img_temp"; 
       File dir = new File(filePath); 
       if (!dir.exists()) 
        dir.mkdirs(); 

       File serverFile = new File(dir.getAbsolutePath() + File.separator + orgName); 

       //Format check 
       if(!IsImage(serverFile)) {return new JsonResponse("FAIL","Is not an image: "+orgName);} 

       //Upload 
       try { 
        file.transferTo(serverFile); 
       } catch (IllegalStateException e) { 
        e.printStackTrace(); 
        return new JsonResponse("FAIL","File uploaded failed: "+orgName); 
       } 
       catch (IOException e) { 
        e.printStackTrace(); 
        return new JsonResponse("FAIL","File uploaded failed: "+orgName); 
       } 

       //Success 
       return new JsonResponse("OK",""); 

      } catch (Exception e) { 
       return new JsonResponse("FAIL","File uploaded failed: "+file.getName() + " => " + e.getMessage()); 
      } 
     } else { 
      return new JsonResponse("FAIL","File uploaded failed: "+ file.getName() + " because the file was empty."); 
     } 
    } 

Приложение является своего рода объявлений. Есть 2 Основное использование для хранения изображений: изображения для элементов (публично доступны) и изображений для временных элементов (не государственные, но и не нуждаются в какой-либо специальной защиты)

Проблема: Это стало ясно, что этот способ хранения изображений очень неустойчив. Первая проблема - каждый раз, когда я развертываю .war-файл своего приложения, мне приходится вручную создавать резервные копии изображений, а затем копировать их в развернутое приложение. Сегодня случилось так, что из-за высокой нагрузки экзистенциальный экземпляр beanstalk был прерван и создан новый. Все изображения потеряны. Так что определенно нужно иметь дело с этим.

Вопрос:

Что такое животное способ справиться с хранения изображений?

Я думал об Amazon S3. Но тогда проблема в том, что это будет сложно отлаживать, потому что весь код будет основан на взаимодействии с локальной средой AWS, поэтому я не могу отлаживать ее на своей локальной машине. Любое решение для этого может быть? S3 кажется хорошим вариантом, если не этим.

Другие небольшие суб-вопрос: На данный момент, это алгоритм, как изображения будут загружены: На размещение формы, есть кнопка, чтобы выбрать изображение. после выбора изображения он отправляется на контроллер /upload_image и загружается в папку temp. Затем, как только пользователь отправит окончательный запрос, изображение переместилось с img_temp на images/*created_item_id*Правильно ли это обработать этот процесс?

+0

Когда вы используете S3, почему это будет трудно отлаживать? Я не понял, с какими проблемами вы столкнетесь? – error2007s

+0

, что я не могу отладить его на моем локальном компьютере – user1935987

+0

Да, вы можете отлаживать его на своем локальном компьютере. Вы должны добавить AWS SDK в свой проект, создать класс, который будет обрабатывать загрузку изображений в AWS S3. Этот класс - это тот, который вы собираетесь отлаживать. –

ответ

0

Глядя на ваш прецедент, вы обязательно должны интегрировать AWS S3, чтобы вы были охвачены бедствиями, которые произошли с вами.

Что такое зверь для обработки изображений?

Я думал об Amazon S3. Но тогда проблема в том, что это будет сложно отлаживать, потому что весь код будет основан на взаимодействии с локальной средой AWS , поэтому я не могу отлаживать его на своей локальной машине. Любое решение для этого может быть? S3 кажется хорошим вариантом, если не этим.

Для этого, если вы реализуете S3 вместе с AWS SDK, проблема с отладкой будет идти.

Другие небольшие суб-вопрос: На данный момент, это алгоритм, как изображения выгружаются: На размещение формы, есть кнопка, чтобы выбрать изображение. После того как изображение выбрано, оно отправлено в контроллер/upload_image и загружено во временную папку.Затем, как только пользователь отправит окончательный запрос , изображение переместилось из img_temp в images/created_item_id Действительно ли этоэто правильный способ обработки этого процесса?

Этот процесс кажется хорошо, но еще один дополнительные изменений вы можете сделать, это начать хроны работы, которая будет копировать изображения на этом пути images/*created_item_id* на S3 ведро, так что у вас есть резервная копия изображений.