【SSH项目实战】国税协同平台-5.头像上传功能

简介:
之前我们完成了用户管理的增删改查功能,来回顾一下我们获取用户列表时的过程:


记得用户添加的时候没有上传头像,下面我们来完成添加用户时,头像上传的功能。
我们上传头像有以下步骤:
1、获取头像(file,contentType,filename)

2、保存头像
2.1、保存头像到指定的文件目录中
2.2、设置用户头像路径

下面是详细实现:
在用户管理的添加、编辑页面中,可以上传用户的头像;页面中对头像字段引用type=file的文本域。
<input type="file" name="headImg"/> 


可以看到我们之前已经写好:

<tr>
    <td class="tdBg" width="200px">头像:</td>
    <td>
        <input type="file" name="headImg"/>
    </td>
</tr>

之后UserAction接收文件需要配置的3个基本属性变量:
private File headImg;
private String headImgContantType;
private String headImgFileName;

并添加相应的get与set方法

接下来我们在Action的add()方法中添加用户上传头像的代码(将头像文件保存在服务器的upload/user目录下,文件的名称以uuid重命名)
//保存新增
public String add(){
	try {
		if(user!=null){
			//处理头像
			if(headImg!=null){
				//1、保存头像到upload/user
				//获取保存路径的绝对地址
				String filePath=ServletActionContext.getServletContext().getRealPath("upload/user");
				//生成带格式的随机文件名称
				String fileName=UUID.randomUUID().toString()+headImgFileName.substring(headImgFileName.lastIndexOf("."));
				//复制文件
				FileUtils.copyFile(headImg, new File(filePath,fileName));
				
				//2、设置用户头像路径
				user.setHeadImg("user/"+fileName);
			}
			
			userService.save(user);
		}
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return "list";
}

下面我们进行测试,重启服务器,点击添加按钮,我们添加一张图片:


我们暂时没有查看界面,我们去数据库查看出现了图片路径:


然后发现tomcat中我们工程的upload/user/下出现了这个图片:



现在我们在编辑界面添加图片的链接:
<tr>
    <td class="tdBg" width="200px">头像:</td>
    <td>
        <s:if test="%{user.headImg != null && user.headImg != ''}">
            <img src="${basePath}upload/<s:property value="user.headImg" />" width="100" height="100"/>
	<s:hidden name="user.headImg"/>
        </s:if>
        <input type="file" name="headImg"/>
    </td>
</tr>
然后我们点击编辑界面,发现用户的头像就可以看到啦:


然后我们给编辑界面也加上传功能:

//保存编辑
public String edit(){
	try {
		if(user!=null){
			//处理头像
			if(headImg!=null){
				
				//1、保存头像到upload/user
				//获取保存路径的绝对地址
				String filePath=ServletActionContext.getServletContext().getRealPath("upload/user");
				//生成带格式的随机文件名称
				String fileName=UUID.randomUUID().toString()+headImgFileName.substring(headImgFileName.lastIndexOf("."));
				//复制文件
				FileUtils.copyFile(headImg, new File(filePath,fileName));
				
				//如果旧头像存在,把旧头像删除
				if(user.getHeadImg()!=null){
					String oldfilename=filePath+"\\"+user.getHeadImg().substring(5);
					File file=new File(oldfilename);
					file.delete();
				}
				
				//2、设置用户头像路径
				user.setHeadImg("user/"+fileName);
			}
			
			userService.updateUserAndRole(user,userRoleIds);
		}
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return "list";
}


测试:

发现图片更改成功,旧头像也被删除:



至此,我们的图片上传功能完成!

参考源代码:http://download.csdn.net/detail/u013517797/9202759

转载请注明出处:http://blog.csdn.net/acmman/article/details/49364187

相关文章
|
8月前
|
Ubuntu 关系型数据库 网络安全
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能
722 1
基于docker搭建gitea私服仓库,并开启https访问、ssh访问和邮箱验证通知功能
|
应用服务中间件 Linux Shell
06_Linux基础-NGINX和浏览器、网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本
NGINX和浏览器、网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本
195 0
06_Linux基础-NGINX和浏览器、网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本
|
Java 网络安全
SSH开发项目:实现一组功能的步骤
本文主要讲实现一组功能的步骤
126 0
|
JSON Java 网络安全
SSH框架之SpringMVC文件上传功能代码
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/79327717 简介  ...
1017 0
|
Web App开发 网络协议 网络安全
|
XML 网络安全 数据格式
ssh框架之struts2文件下载功能代码
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/72764335 一、前言   上一篇博客我们了解了ssh框架的springmvc的文件下载功能,它在方法里面并不需要设置返回的http的类型和标题,但也能自动弹出下载框,这就是框架本身的一个优点,封装了原生java的方法。
1011 0
|
JSON Java 程序员
ssh框架之springmvc文件下载功能代码
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/72771926 一、前言   上一篇文章我们了解了,通过Java的io输出流来实现普通的文件下载的功能,是广大程序员在做项目中会普遍使用到的下载文件的方法。
865 0
|
Java 网络安全 Spring
SSH(STRUTS2+SPRING+HIBERNATE)实现文件上传功能
首先是上传页面(upload.jsp) 主要代码如下,其中文件字段按自己所需可以改,但在Action中也必须增减相应字段来接受, [java] view plaincopy         ...
1012 0