spring mvc框架上传图片文件

使用Ajax技术实现图片上传功能 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它不是一种新的编程语言,而是一种使用现有标准的新方法。利用Ajax,Web应用可以迅速地将增量更新呈现在用户的浏览器中,而不需要用户手动刷新页面。这种技术大大增强了Web应用的用户体验。在本章节中,我们介绍了如何配置Spring MVC框架以及相关的文件上传解析器。正确配置这些组件是实现文件上传功能的后端基础。 阅读详情

1、导入相关包


2、配置xml文件

<!-- 配置上传组件 -->
	<bean id="multipartResolver"  
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <!-- 上传文件大小上限,单位为字节(10MB) -->
        <property name="maxUploadSize">  
            <value>10485760</value>  
        </property>  
        <!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
        <property name="defaultEncoding">
            <value>UTF-8</value>
        </property>
    </bean>

3、新建对象,提供get和set方法


4、Mapper文件中的映射关系及sql语句

映射关系

<resultMap type="Book" id="bookMap">
  <result column="isbn" property="isbn"/>
	  	<result column="book_name" property="bookName"/>
	  	<result column="price" property="price"/>
	  	<result column="publish_date" property="publishDate"/>
	  	<result column="book_image" property="bookImage"/>
	  	<result column="publisher" property="publisher"/>
	  	
	  	<!-- <result column="category_id" property="category.id"/> -->
	  	<association property="category" column="category_id" 
	  					javaType="Category" select="selectCategoryBook">
	  	</association>
  </resultMap>

insert语句

 <insert id="addBook" parameterType="Book">
        insert into book
        values(#{isbn},#{bookName},#{price},#{bookImage},#{publishDate},#{publisher},#{category.id})
    </insert>

查询语句(分页查询,具体看分页查询博客)

  <select id="countForPager" parameterType="Pager" resultType="int">
	  select count(isbn) from book
	  <where>
		  <if test="param !=null and param.bookName !=null">
		  book_name like concat(concat("%",#{param.bookName}),"%")
		  </if>
		  
		  <!-- 查询条件中的小于号或者大于号可以使用转义符号进行编写:小于 (<) ; 大于 (>) 
		  		或者使用cdata标号进行标志
		   -->
		  <if test="param !=null and param.price !=0.0">
		  price <= param.price
			<!--   <![CDATA[price <= param.price]]> -->
			<!--   price<![CDATA[<]]>= param.price -->
		  </if>
	  </where>
  </select>

5、controller部分

	@RequestMapping("/doadd")
	//spring mvc可以把表单或url参数封装到一个对象中
	//spring mvc可以把参数转换成基本数据类型,并封装到对象中
	public String addBook(Model model,@Validated Book book,BindingResult result,MultipartFile file1,HttpServletRequest request) throws IllegalStateException, IOException {
		//(网页)客户端提交数据到spring mvc后,会先进行数据的封装与转换,数据校验,完成后再进行控制器类进行处理
		//可以使用校验框架进行数据的集中校验,并获取校验结果,根据校验结果,进行跳转控制
		if (result.hasErrors()) {
			//去除所有的校验错误或字段校验错误
			List<ObjectError> errors = result.getAllErrors();
			
			for(ObjectError error :errors) {
				logger.debug(error.getObjectName());
			}
			
			//把异常信息传回页面进行显示
			model.addAttribute("errors", errors);
			return "addbook";
			
		}
		
		//通过表单验证后,执行上传
		//如果文件不位空,写入上传路径
		 if(!file1.isEmpty()) {
	            //上传文件路径
	            String path = request.getServletContext().getRealPath("/uploads/");
	            //上传文件名
	            String filename = file1.getOriginalFilename();
	            String fileExt = filename.substring(filename.lastIndexOf("."));
	            String uuid = UUID.randomUUID().toString();//随机UUID文件名
	            
	            String newFile = uuid + fileExt;
	            File filepath = new File(path,newFile);
	            logger.info(newFile);
	            logger.info(filepath.getAbsolutePath());
	            
	            //判断路径是否存在,如果不存在就创建一个
	            if (!filepath.getParentFile().exists()) { 
	                filepath.getParentFile().mkdirs();
	            }
	            //将上传文件保存到一个目标文件当中
	            file1.transferTo(new File(path + File.separator + newFile));
	            
	            //上传成功,保存上传后的文件路径到book对象中,在调用业务类保存到数据库中
	            book.setBookImage("uploads/"+ newFile);
	        } 
		
//		boolean r = new Random().nextInt(10)%2==1?true:false;
//		if (r) 
//			throw new NullPointerException("模拟空指针异常");
		
		boolean ret = IBookService.addBook(book);
		
		//接收表单处理后,如果使用请求转发进行跳转会产生表单重复提交问题(刷新页面会重复提交)
		//为了解决表单重复提交,在处理更新操作后,一般会执行重定向跳转
		
		if (ret) {
//			return "forward:/book/list.action";
			return "redirect:/book/list.action";
		}else {
//			return "forward:/book/add.action";
			return "redirect:/book/list.action";
		}
	}

6、页面部分

上传部分

<tr>
	<td>封面图片:</td>
	<!-- 文件上传时,文件域的名称不要与对象名一致,因为它们的类型不一致 ,spring mvc无法完成-->
	<td><input name="file1" type="file" /></td>
</tr>

显示部分

<td><img height="60" alt="封面图片" src="${book.bookImage }"></td>

注意:照片上传到云服务器,本地路径为

D:\lsworkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\BookStoreWeb\uploads




Spring MVC文件上传实战指南 简介:Spring MVC框架简化了Web应用中的文件上传过程。本文将深入介绍在Spring MVC项目中实现文件上传的步骤,包括控制器方法配置、MultipartResolver配置、文件存储与管理、异常处理、前端实现以及安全限制等关键点。还将探讨涉及图片上传时的额外处理,如图片预览和格式转换,为开发者提供全面的文件上传技术解决方案。 阅读详情

相关推荐

Jenkins测试详细使用教程(二):jenkins两种主要构建方法

Jenkins有两种定义构建作业的主要方法:(自由风格项目)和Pipeline(流水线项目)。

m0_62825058的博客 2434

springMVC框架-图片上传接口

Controler层里面代码内容@RequestMapping(value="/uploadImg", method=RequestMethod.POST) @ResponseBody public String uploadImgController(@RequestParam(value="img")MultipartFile img){ File f = new File("/imag

一位於同学的博客 1901

Anaconda+Pycharm安装

我提前创建好一个自己项目所需的虚拟环境。步骤是:打开终端(cmd)或者 搜索 ”Anaconda Prompt“ 并打开,输入 conda create -n pytorch python=3.9 -c。

Wang_sweet的博客 3232

MVC 文件上传和图片上传

public JsonResult AddProDoc(ProjectDoc doc)         {             try             { ///文件                 HttpPostedFileBase file = Request.Files["File"]; ///图片                 //WebImage image

Roby sky 3752

在VM虚拟机的MobaXterm下安装JDK17

本文介绍了在Linux系统下安装配置JDK17的完整步骤:1)从Oracle或OpenJDK官网下载Linux版JDK17压缩包;2)上传至/usr/local目录;3)解压安装包;4)通过编辑/etc/profile文件配置环境变量,添加JAVA_HOME和PATH路径;5)使用source命令使配置生效;6)通过javac -version验证安装是否成功。整个过程涵盖了从下载到环境配置的完整流程,确保Java开发环境正确设置。

qq_2937655951的博客 441

Docker启动安装nacos(详情讲解,全网最细)

docker安装nacos保姆级教程

ilvjiale的博客 8万+

MVC 文件(图片)上传

文件(图片)上传: 图片上传的思路: 一、(页面的操作)主要是通过input的[type=“file”]属性触发图片的上传,然后将上传的图片进行筛选,验证,读取。然后放到指定的容器,当读取文件后并将文件转为Base64编码,再将img标签的src值设置为读取到的Base64编码 注意:文件的上传只能使用post提交,不能使用get,因为文件比get的容量要大。 二、(后台的操作)判断是否有存放图片的目录(如果没有,创建一个目录) -> 验证图片是否有上传以及图片的大小是否有一字节以上 -> 获取

shmily_Laowang的博客 1056

clock min pulse width检查

高电平脉宽 = clock fall edge到达FF/CK的时间 - clock rise edge到达FF/CK的时间;低电平脉宽 = 下一T clock rise edge到达FF/CK的时间 - clock fall edge到达FF/CK的时间。而required pulse width是根据FF/CK处的transition,根据查找表计算得到的。为什么clock transition越大,会导致required pulse width越大呢?5、 降低clock上的串扰。

芯冰乐 577

用SpringMVC框架实现图片上传与下载

1、新建一个Maven webapp项目,引入需要用的夹包,pom.xml文件的依赖包如下: net.coobird thumbnailator 0.4.8 junit junit 3.8.1 test

蓬莱道人的博客 1万+

基于YOLOv10的机器人抓取引导系统:从物体检测到精准抓取

python# 数据标注工具简化版import os"""启动标注工具""""""标注单张图像"""print(f"标注图像: {os.path.basename(img_path)}")print("请在图像上绘制抓取矩形框...")# 这里应该实现交互式标注界面# 简化版本直接返回示例标注# 示例标注数据"""保存标注结果"""# 保存为YOLO格式# 转换为YOLO格式。

YOLO 377

手把手教你ensp仿真搭建校园网(含防火墙及无线网络)系列(二)校园网接入层交换机配置

本系列博客将带你从零开始,使用 华为 eNSP(Enterprise Network Simulation Platform) 仿真搭建一个完整的校园网络,涵盖 核心层、汇聚层、接入层、防火墙安全策略、无线AC+AP组网 等实战场景。无论你是网络初学者还是希望深化实战经验的工程师,都能通过本教程掌握企业级网络的规划、配置与排错技巧。

echo的博客 1219

MVC中的图片上传

//用来获取上传的文件 //HttpPostedFileBase files = Request.Files[0]; //获取文件的名字 var fileName = file.FileName; //将虚拟路径转化为物理路径 var filePath = Server.MapP...

Vip_judu的博客 3715

剪映专业版教程:用AI生成音乐MV并重新制作画面—《漂泊与归梦》完全原创实战

本文详细拆解如何用AI生成音乐MV并重新制作画面的全流程。以歌曲《漂泊与归梦》为例,首先用AI将歌词转化为带音乐的MP4文件;导入剪映后分离音频并删除原视频,通过“识别字幕”功能提取歌词文本并逐句核对修正;接着设置“向右擦除”动画并锁定字幕轨道;最后根据歌词意境配置动漫、风景等非真人画面规避审核风险。教程涵盖从AI生成、音频分离、字幕提取到画面重制的每个环节,助你打造完全原创、无侵权风险的音乐短视频。

深耕计算机专业知识与技术。 1074

spring mvc用common fileupload上传图片 文件名重命名为时间

参考代码 参考代码 package control; //package uploadPicture; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java....

weixin_40938312的博客 456

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SSM框架上传文件图片并回显到前端

SSM框架上传文件图片并回显到前端

qq_45780016的博客 2652

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

springMVC上传图片

需搭建好ssm环境 一.配置虚拟目录 二.加入jar包 三.在springmvc.xml中配置文件上传解析器 &lt;!-- 实现图片上传(文件上传),需要配置上传解析器 --&gt; &lt;!-- 配置文件上传解析器必须要配置id而且id的值为接口的名字,首字母小写 --&gt; &lt;!-- 若配置其他属性查看CommonsFileUploadSuppor...

keyuzhang的博客 202

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

使用SpringMVC配合jQuery文件上传插件ssi-uploader实现多图片可预览上传

公司业务中要实现一个带预览功能的多图片上传。在网上找了很多资料,都有或多或少的不足。有的可以实现多图片上传功能,但前台的实际操作为每次选择一张图片,没有预览功能,上传时可以将多个选中的图片保存到一个数组中,java后台使用CommonsMultipartFile files[] 或MultipartFile files[]数组接受.这样的案例网上有很多,这里就不详细介绍了。也有一些前台用基于j

linux__xu的博客 756

struts2 或 spring mvc上传图片生成高清缩略图,亲测可以用哦!

教你在struts2上传图片生成高清缩略图的功能 运用在spring MVC上,各们亲!教你举一反三:   近段时间在运用了spring mvc+spring3.x+mybatis3.x框架开发项目,碰到一个问题,上传图片并生成缩略图。在网上找了很多资料都没有看到我想要的功能,要不就单纯上传图片,而且代码简单没什么实用处。要不就是上传文件,不是我想找的。记得之前struts2也有上传图片生成高

蓝缘 1万+

Java实现图片上传、文件上传、 批量上传、 Base64图片上传功能

Java中实现图片上传、文件上传、批量上传以及Base64图片上传是Web开发中常见的需求

m0_72642319的博客 4313

SSM框架实现图片上传并查询数据库中的图片(多图片上传请看下篇博客)

  第一步:首先要在我们的springMVC.xml文件中添加上传文件解析器 &lt;!-- 定义文件上传解析器 --&gt; &lt;bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"&gt; ...

贼皮滴小仙女的博客 6981

跨域上传的简单例子

上传代码的重用性 在springmvc基础上处理上传 上传图片预览 上传jsp页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here $.uimg = { draw: function(node){

hins 2924

SpringBoot-文件上传

Spring MVC 框架的 MultipartResolver 接口提供了对文件上传功能的直接支持,可以将上传请求包装成可以直接获取的文件数据,从而操作方便,它有以下两个实现类。文件大小阈值,当大于这个阈值时将写入到磁盘,否则存在内存中,(默认值 0 ,一般情况下不用特意修改)判断是否要延迟解析文件(相当于懒加载,一般情况下不用特意修改)最大支持文件大小,默认 1 M ,该值可适当的调整。是否支持 multipart 上传文件,默认支持。最大支持请求大小,默认 10 M。云存储(阿里云OSS,付费)

逍遥人世欢 820

使用SSM框架上传图片

使用SSM框架上传图片 建数据表 CREATE DATABASE my_resource; USE my_resource; CREATE TABLE `image`( `id` INT AUTO_INCREMENT , `title` VARCHAR(255) , `url` VARCHAR(255) , `type` VARCHAR(20), PRIMARY KEY(`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8; 通过idea开始一个maven工程

不知名路人甲的博客 3873

SpringMVC单图片上传

springmvc上传单个图片

一个懒惰的程序猿的博客 408

上传图片(文件)

上传图片(文件)方式 一、通过文件方式上传 1. 单独一个图片或文件代码案例 1.1 配置文件上传解析器 <!--配置文件上传解析器 id必须为CommonsMultipartResolver--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMu...

qq_42570364的博客 267

springmvc上传图片

1.多部件的解析器 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 5242880 // 上传图片 if (items_pic!=null) { // 存储图

weiyuanzhuo的博客 403
上一篇: jQuery,鼠标失去焦点事件
下一篇: sql语句获取今天、昨天、近7天、本周、上周、本月、上月、半年数据
sky_2247371097
博客等级 码龄8年 5粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值