如何在Spring MVC中上传和检索文件(图像,音频和视频)

时间:2015-07-21 07:43:37

标签: java spring spring-mvc javabeans

我在Spring MVC框架中设计一个小应用程序。我有一个HTML页面,用户可以上传多个文件。

这是我的HTML文件:



string Query = String.Format(@"({1} like '%{0}%' or {2} like '%{0}%')", txtBoxFind.Text.trim(),"ColumnName1","ColumnName2");
(dataGridView.DataSource as DataTable).DefaultView.RowFilter = string.Format(Query);




基于此代码,我允许用户上传2个文件。

我还有一个叫做McqItem.java的bean:



<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">
	<form:input type="file" path="img1" class="form-control" name="img1"/>
</div>
</div>
							
<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>
&#13;
&#13;
&#13;

在我的控制器中,我设计了一种方法,我将所有数据(选项1和选项2)传递给bean,然后从那里传递给模型,并将它们保存在我的数据库中

但是:我不知道如何保存我的文件。喜欢将它们保存在文件中。

有人可以告诉我如何保存上传的文件?

2 个答案:

答案 0 :(得分:1)

您可以使用多部分文件上传来上传和保存文件。

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

来自春季靴子的这个样本是一个非常好的例子

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

答案 1 :(得分:1)

所以这是我在完成该链接后所做的事情

控制器:

@RequestMapping(value="/questionType/MCQ.do",method = RequestMethod.POST)
	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{
		ModelAndView modelAndView = new ModelAndView();
		QuizItem quizitem=(QuizItem)request.getSession().getAttribute("quizItem");
		mcqItem.setQuiz_id(String.valueOf(quizitem.getId()));
		QuizItem qType=(QuizItem)request.getSession().getAttribute("qTypeItem");
		mcqItem.setQType(qType.getItemType());
		
//begin the uploading section

		byte[] img1File=null;
		byte[] img2File=null;
		if(!img1.isEmpty() && !img2.isEmpty()){
		try{
			img1File= img1.getBytes();
			img2File=img2.getBytes();
			
			BufferedOutputStream stream= 
					new BufferedOutputStream(new FileOutputStream(new File(option1)));
			stream.write(img1File);
			stream.write(img2File);
			stream.close();
			System.out.println("Successful Upload");
		}catch(Exception e){
			return null;
		}	}
		
		
//end Uploading section
	
		projectDAO.saveQuestion(mcqItem);
		modelAndView.addObject("qtypeitem", new QuizItem());
		modelAndView.setViewName("project/qType");
		
		return modelAndView;
		
	}
	
基本上我的问题是,在我的文件中,我有一个表格也可以保存在db中。

但是它给了我这个错误:“当前请求不是多部分请求”