2015-07-21 32 views
0

我正在設計Spring MVC框架中的一個小應用程序。我有一個HTML頁面,用戶可以上傳多個文件。我如何在Spring MVC中上傳和檢索文件(圖像,音頻和視頻)

這裏是我的HTML文件:

<div class="form-group"> 
 
<label class="control-label col-sm-4" for="option1">Option 1:</label> 
 
<div class="col-sm-4"> 
 
<form:input type="text" path="option1" class="form-control"/> 
 
</div> 
 
<div class="col-sm-4"> 
 
\t <form:input type="file" path="img1" class="form-control" name="img1"/> 
 
</div> 
 
</div> 
 
\t \t \t \t \t \t \t 
 
<div class="form-group"> 
 
<label class="control-label col-sm-4" for="option2">Option 2:</label> 
 
<div class="col-sm-4"> 
 
<form:input type="text" path="option2" class="form-control"/> 
 
</div> 
 
<div class="col-sm-4"> 
 
<form:input type="file" path="img2" class="form-control" name="img2"/> 
 
</div> 
 
</div>

在此基礎上的代碼,我允許用戶上傳2個文件。

此外,我有一個名爲McqItem.java豆:

public class McqItem { 
 
    
 
    \t private String option1; 
 
\t private String option2; 
 
    private byte[] img1; 
 
\t private byte[] img2; 
 

 
//with their getter and setters 
 
}

以我控制器我已經設計,其中i通過所有的數據(選項1和選項2)到bean的方法從那裏到模型,並將它們保存在我的數據庫中

但是:我不知道如何保存我的文件。寧願將它們保存在一個文件中。

有人能告訴我如何保存上傳的文件?

回答

1

所以這裏是我已經通過鏈接

控制器會後進行:

@RequestMapping(value="/questionType/MCQ.do",method = RequestMethod.POST) 
 
\t public ModelAndView saveMCQuestion(@RequestParam("option1") String option1,@RequestParam("option2") String option2 ,@RequestParam("img1") MultipartFile img1,@RequestParam("img2") MultipartFile img2,@ModelAttribute McqItem mcqItem, HttpServletRequest request)throws IOException{ 
 
\t \t ModelAndView modelAndView = new ModelAndView(); 
 
\t \t QuizItem quizitem=(QuizItem)request.getSession().getAttribute("quizItem"); 
 
\t \t mcqItem.setQuiz_id(String.valueOf(quizitem.getId())); 
 
\t \t QuizItem qType=(QuizItem)request.getSession().getAttribute("qTypeItem"); 
 
\t \t mcqItem.setQType(qType.getItemType()); 
 
\t \t 
 
//begin the uploading section 
 

 
\t \t byte[] img1File=null; 
 
\t \t byte[] img2File=null; 
 
\t \t if(!img1.isEmpty() && !img2.isEmpty()){ 
 
\t \t try{ 
 
\t \t \t img1File= img1.getBytes(); 
 
\t \t \t img2File=img2.getBytes(); 
 
\t \t \t 
 
\t \t \t BufferedOutputStream stream= 
 
\t \t \t \t \t new BufferedOutputStream(new FileOutputStream(new File(option1))); 
 
\t \t \t stream.write(img1File); 
 
\t \t \t stream.write(img2File); 
 
\t \t \t stream.close(); 
 
\t \t \t System.out.println("Successful Upload"); 
 
\t \t }catch(Exception e){ 
 
\t \t \t return null; 
 
\t \t } \t } 
 
\t \t 
 
\t \t 
 
//end Uploading section 
 
\t 
 
\t \t projectDAO.saveQuestion(mcqItem); 
 
\t \t modelAndView.addObject("qtypeitem", new QuizItem()); 
 
\t \t modelAndView.setViewName("project/qType"); 
 
\t \t 
 
\t \t return modelAndView; 
 
\t \t 
 
\t } 
 
\t
基本上我的問題是,沿着我的文件我有一個窗體保存在數據庫中。

但它給我這個錯誤:「當前請求不是多要求」

+0

是否使用彈簧啓動(鏈接使用彈簧啓動)。否則,您可能需要手動添加多部分配置元素和依賴關係。 http://stackoverflow.com/questions/15008049/org-springframework-web-multipart-multipartexception-the-current-request-is-not –

0

您可以使用多部分文件上傳來上傳和保存文件。

 byte[] bytes = file.getBytes(); 
      BufferedOutputStream stream = 
        new BufferedOutputStream(new FileOutputStream(new File(name))); 
      stream.write(bytes); 
      stream.close(); 

這從春天啓動樣本是一個非常好的exampe

https://spring.io/guides/gs/uploading-files/

+0

保羅您好,感謝的答案,但我應該在哪裏放置這些代碼?這段代碼在哪裏發送圖像? –

+0

圖像將被保存到服務器上的文件系統。我上面粘貼的代碼是用於控制器的。不過,我認爲你最好看看這個示例項目 - https://spring.io/guides/gs/uploading-files/ –

+0

如果這有幫助 - 如果你接受答案會很好。謝謝! –

相關問題