2013-03-20 3 views
1

Я пишу приложение Java EE, и я пытаюсь получить изображение из URL-адреса, а затем сохранить его в своей папке ресурсов (через запрос AJAX). Моя проблема в том, что я не перезагружаю свой сервер. Я не могу отобразить это изображение, потому что он не загружен на моем сервере.Как сохранить и загрузить изображение на сервере Tomcat

Я использую Tomcat 7, Spring, Hibernate, Primeface.

Вот мой класс, чтобы сохранить myimage

public class ImageSaver { 
    final static int SIZE=1024; 

    public static void fileUrl(String fAddress, String localFileName, String destinationDir) { 
     OutputStream outStream = null; 
     URLConnection uCon = null; 

     InputStream is = null; 
     try { 
      URL url = new URL(fAddress); 
      byte[] buf; 
      int byteRead; 
      int byteWritten=0; 
      outStream = new BufferedOutputStream(new FileOutputStream(destinationDir+"\\"+localFileName)); 
      uCon = url.openConnection(); 
      is = uCon.getInputStream(); 
      buf = new byte[SIZE]; 
      while ((byteRead = is.read(buf)) != -1) { 
       outStream.write(buf, 0, byteRead); 
       byteWritten += byteRead; 
      } 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
     finally { 
      try { 
       is.close(); 
       outStream.close(); 
      } 
      catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    public static void fileDownload(String fAddress,String fileName, String destinationDir){ 
     int slashIndex =fAddress.lastIndexOf('/'); 
     int periodIndex =fAddress.lastIndexOf('.'); 
     //String fileName=fAddress.substring(slashIndex + 1); 
     if (periodIndex >=1 && slashIndex >= 0 && slashIndex < fAddress.length()-1){ 
     } 
     else{ 
      System.err.println("path or file name."); 
     } 
    } 

} 

и как я вызываю функцию:

ImageSaver.fileDownload("http://www.mywebsite.com/myImage.jpg","myImage.jpg", "C:\\Users\\MyProject\\src\\main\\webapp\\resources\\images"); 

Как автоматически загружены на мой служить моей загруженное изображение без перезагрузки? Какой файл позволяет настроить папку для загрузки? И как ?

ответ

3

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

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

Предположите, что ваш каталог webapp не может быть записан в ваш webapp. Это также облегчит резервное копирование и обновления: представьте, что вам нужно будет установить обновление или перейти на другой сервер: приложение, которое у вас есть на вашем сервере, будет частично содержаться в его * .war файле. Если есть явный каталог ресурсов, вы можете создать резервную копию независимо (или поместить его на общий сетевой диск)

+0

Ну, я уже пробовал этот метод, но думаю, что это не так. Как я могу «подключить» свою папку к моему webapp? Я хочу сказать, что если я сохраню свое изображение в _C:/image_, то если я использую путь _C: /image/myimage.jpg_, чтобы отобразить его в моем JSP (на самом деле я использую XHTML, но это не так), это не сработает. Я прочитал что-то о фильтре в _web.xml_, где мы можем указать папку для загрузки. Это хорошее решение? Если да, то как это работает? Спасибо за ваш ответ – Tako

+0

Я думаю, что ответ на мой вопрос [здесь] (http://stackoverflow.com/questions/1812244/simplest-way-to-serve-static-data-from-outside-the-application- server-in-a-java/1812356 # 1812356) – Tako

+0

да, похоже на точный дубликат. Спасибо за ссылку –

Смежные вопросы