1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > SSM框架:springmvc实现图片的上传与图片上传路径的设置

SSM框架:springmvc实现图片的上传与图片上传路径的设置

时间:2023-04-07 05:24:08

相关推荐

SSM框架:springmvc实现图片的上传与图片上传路径的设置

说明:这个图片类文件上传的步骤是我经过验证的,在SSM框架下完成,搭建框架的部分不在这里说明。

第一步:添加两个项目需要的依赖。(pom.xml)

<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.3</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency>

第二步:配置图片文件解析器,及一些参数。(springmvc.xml)

<bean id="multipartResolver" class="org.springframework.monsMultipartResolver" ><property name="maxUploadSize" value="104857600"/><property name="defaultEncoding" value="utf-8"/><property name="maxInMemorySize" value="40960"/></bean>

第三步:创建数据传输类

public class UserDto {private User user;private MultipartFile multipartFile;}

第四步:设置form表单

1.这里注意数据传输模型的使用:modelAttribute=“userDto”

2.表单的设置:enctype=“multipart/form-data”

<form:form action="/user/upload" method="post" enctype="multipart/form-data" modelAttribute="userDto">用户名:<form:input path="user.username"/>密码: <form:password path="user.password"/>头像: <form:input type="file" path="multipartFile"></form:form>

第五步:封装一个处理图片的工具类,大概分为一下几个步骤

(1)验证传入的图片非空

(2)定义图片的存储路径 realPath

(3)得到原始图片名:xxoo.jpg

(4)创建新的唯一图片名 = uuidName + .扩展名 9d76abf6-2702-4d18-881d-4e151b5445f3.jpg

(5)封装上传的文件将要存储的 全路径 = 路径 + 文件名

C:\java\ide-workspace\project-a\pa-web\target\pa-web\libs\img\9d76abf6-2702-4d18-881d-4e151b5445f3.jpg

(6)把图片文件转移至 全路径

(7)返回新图片名 newImageName

public Class UploadTool{public static String uploadImage(MultipartFile imageFile){String newImageName = null;if (!imageFile.isEmpty()) { //(1)String realPath = "C:\\java\\images\\"; //(2)String originalName = imageFile.getOriginalFilename(); //(3)String uuidName = UUID.randomUUID().toString(); //(4)newImageName = uuidName + originalName.substring(originalName.lastIndexOf(".")); //(4)File file = new File(realPath + newImageName); //(5)imageFile.transferTo(file); //(6)return newImageName; //(7)}}

第六步:控制器接收数据模型,完成图片的上传,图片名的保存。

1.UserDto是前面封装的数据传输 模型

2.调用第五步封装的工具类完成图片的上传,得到图片唯一的名字

3.把新的图片名保存在user对象

4.保存之后跳转到用户详情页

@RequestMapping("/user")@Controller("userController")public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/upload")public String upload(UserDto userDto){User user = userDto.getUser();MultipartFile multipartFile = userDto.getMultipartFile();String imageName = UploadTool.uploadImage(MultipartFile multipartFile);user.setImageName(imageName);userService.insert(user);return"user_detail";}

第七步:图片保存路径的设置与图片浏览路径的获得

1.把图片保存在项目里面

1-1. webapp下面创建目录 "/libs/image"用来保存图片(第五步已完成)

String realPath = request.getSession().getServletContext().getRealPath("/libs/image");

1-2. 前端展示图片的url路径为:

<img src="${pageContext.request.contextPath}/libs/image/${imageName}" />

2.把图片保存在电脑上

2-1. 配置图片存放的物理路径与虚拟路径,

打开tomcat\conf\server.xml文件在Host标签下加上如下配置

C:\java\images 是图片存放的物理路径,/images 是访问图片的虚拟路径

<Host><Context docBase="C:\java\images" path="/images"/></Host>

2-2. 在tomcat设置里面配置 虚拟访问路径 与 物理存放路径的映射

点击External Source

选择创建的物理存储路径 C:\java\images

把虚拟路径 /images 映射到 images文件夹

2-3. 图片的访问路径如下

<img src="${pageContext.request.contextPath}/images/${imageName}"/>

3.把图片保存在专用的图片服务器

这点还没有搞明白,有高手指点请留言,提前感谢… …

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。