2012-08-22 3 views
1

Я загружаю файл с использованием Spring MVC и jquery. Внутри моего метода класса я написалЗагрузка файла с помощью Spring MVC

@RequestMapping(value="attachFile", method=RequestMethod.POST) 
public @ResponseBody List<FileAttachment> upload(
     @RequestParam("file") MultipartFile file, 
     HttpServletRequest request, 
     HttpSession session) { 
    String fileName = null; 
    InputStream inputStream = null; 
    OutputStream outputStream = null; 


    //Save the file to a temporary location 

    ServletContext context = session.getServletContext(); 
    String realContextPath = context.getRealPath("/"); 

    fileName = realContextPath +"/images/"+file.getOriginalFilename(); 


    //File dest = new File(fileName); 

    try { 

     //file.transferTo(dest); 

     inputStream = file.getInputStream(); 
     outputStream = new FileOutputStream(fileName); 



     inputStream.close(); 
     outputStream.close(); 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

Сво загрузить файл правильно, я использую

ServletContext context = session.getServletContext(); 
    String realContextPath = context.getRealPath("/"); 

, чтобы получить путь. Мой первый вопрос: правильно ли это путь, и он хранит файл где-то в рабочей области/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/myproject/images

и когда я пытаюсь отобразить это изображение на моей странице JSP, используя следующий код

<img src="<%=request.getRealPath("/") + "images/images.jpg" %>" alt="Upload Image" /> 

Он не отображает изображение, порождающей его следующий HTML

<img src="/home/name/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/myproject/images/images.jpg" alt="Upload Image"> 

Я делаю все правильно ? В моем проекте я должен ежедневно загружать большое количество файлов.

Пожалуйста, дайте мне знать, если вам нужно что-нибудь еще, чтобы понять мой вопрос

ответ

1

Это будет лучше, если вы загружаете файлы в каком-нибудь каталоге по абсолютному пути (например. C:\images\) вместо относительного (вашего подхода). Обычно веб-приложения работают на Linux-матианах при производстве, и хорошая практика заключается в том, чтобы настроить путь сохранения.

Создайте свойство приложения, которое будет содержать путь сохранения файлов (в файле xml или property).

+0

Привет вакуум, спасибо за ваш ответ. Я попытался проверить это и изменить свой код с помощью этого файлаName = "/ Home/images /" + file.getOriginalFilename(); то я получаю ошибку /Home/images/images.jpg (Нет такого файла или каталога). Я создал папку inages в моей домашней папке на ubuntu – user965884

+1

Можете ли вы попробовать/home/images (обратите внимание на нижний регистр h в доме)? –

+0

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

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