springmvc之文件上传

示例:在修改商品页面,添加上传商品图片功能

1、springmvc中对多部件类型的解析

在页面form中提交enctype=”multipart/form-data”的数据时,需要springmvcmultipart类型的数据进行解析。  

需要在springmvc.xml中配置multipart的解析器,才能进行解析

	<!-- 配置 文件上传 解析器-->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 设置上传文件的最大尺寸为5MB -->
		<property name="maxUploadSize">
			<value>5242880</value>
		</property>
	</bean>

2、 添加上传文件所需要的 jar 包,下载地址:点击打开链接


3、创建图片的虚拟目录  

方式一:通过eclipse的图形界面来创建


方式二:通过修改tomcat中的配置文件来创建

conf/server.xml中的Host节点下添加<Context docBase="G:\MyProject\temp" path="/pic" reloadable="false"/>

注意:在虚拟图片的虚拟目录中,一定将图片目录分级创建(作用:提供i/o性能),一般我们采用按照(年、月、日)进行分级创建


4、编写上传文件的代码

表现层实现:

			<tr>
				<td>商品图片</td>
				<td>
					<c:if test="${itemsCustom.pic != null }">
						<input type="hidden" name="pic" value="${itemsCustom.pic }"/>
						<img src="/pic/${itemsCustom.pic }" width="100" height="100"/>
						<br />
					</c:if>
					<input type="file" name="<span style="background-color: rgb(255, 255, 51);">items_pic</span>"/>
				</td>
			</tr>

controller方法中实现代码:

	@RequestMapping("/editItemsSubmit")
	public String editItemsSubmit(Model model,HttpServletRequest request,Integer id,String name,
			@ModelAttribute("items") @Validated(value={ValidGroup1.class}) ItemsCustom itemsCustom,
			BindingResult bindingResult,
			MultipartFile <span style="background-color: rgb(255, 255, 51);">items_pic</span>//接收商品图片
			) throws Exception{
		
		//获取校验错误信息
		if(bindingResult.hasErrors()){//如果有错误
			//输出错误信息
			List<ObjectError> allErrors = bindingResult.getAllErrors();
			for (ObjectError objectError : allErrors) {
				//输出错误信息
				System.out.println(objectError.getDefaultMessage());
			}
			//将错误信息传到页面
			model.addAttribute("allErrors", allErrors);
			//可以直接使用model将提交的pojo回显到页面
			model.addAttribute("itemsCustom",itemsCustom);
			
			//出错后重新回到商品的修改页面
			return "items/editItems";
		}
		//上传图片
		if(items_pic != null){
			//上传图片的原始名称
			String originalFilename = items_pic.getOriginalFilename();
			if(originalFilename != null && originalFilename.length() > 0){
				//存储图片的物理路径
				String pic_path = "G:\\MyProject\\temp\\";
				//创建新的图片名称    UUID.randomUUID():随机数   + 扩展名
				String newFilename = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));
				
				//新的图片
				File newfile = new File(pic_path+newFilename);
				//将内存中的数据写入磁盘
				items_pic.transferTo(newfile);
				//结束上传
				//将新的图片名称写到itemsCustom属性中
				itemsCustom.setPic(newFilename);
			}
		}
		
		//调用service更新商品信息,页面需要将商品新传到此方法
		itemsService.updateItems(id, itemsCustom);
		
		//重定向到商品的查询列表
		return "redirect:queryItems.action";
	}
注意:controller形参中的MultipartFile变量名称要与页面中文件控件的名称一致。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring MVC中实现文件上传,你需要进行以下几个步骤: 1. 引入依赖:在项目的pom.xml文件中,添加对Spring MVC文件上传组件的依赖。 2. 在前端编写一个包含文件上传功能的form表单:在HTML页面中,使用form表单标签,并设置属性enctype="multipart/form-data",并添加一个type为file的input标签,用于选择要上传的文件。 3. 在Spring MVC的配置文件中配置文件上传器:在Spring MVC的配置文件(通常是一个XML文件)中,添加一个bean,其id为multipartResolver,类为org.springframework.web.multipart.commons.CommonsMultipartResolver。这是Spring提供的一个文件上传解析器。 4. 在Controller中处理文件上传:在Spring MVC的Controller中,添加一个方法用于处理文件上传的请求。该方法需要添加一个参数,用于接收上传的文件。在方法中,你可以通过MultipartFile对象来访问上传的文件,并执行相应的操作。 下面是一个示例代码,展示了如何在Spring MVC中实现文件上传: ```java @Controller public class FileUploadController { @RequestMapping(value = "/upload", method = RequestMethod.POST) public String handleFileUpload(@RequestParam("file") MultipartFile file) { // 处理文件上传的逻辑 if (!file.isEmpty()) { // 获取上传的文件名 String fileName = file.getOriginalFilename(); // 进行处理... return "success"; } else { return "error"; } } } ``` 请注意,上述代码中的"/upload"是文件上传的请求路径,你可以根据自己的需要进行修改。 总结一下,要在Spring MVC中实现文件上传,你需要引入依赖、编写前端form表单、配置文件上传器,并在Controller中处理文件上传的请求。希望这些信息对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SpringMvc上传文件(详细)](https://blog.csdn.net/weixin_55519875/article/details/128096289)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值