用户编辑基本信息时的上传头像功能实现

一、编辑基本信息页面有“点击上传头像”和“提交”两个submit,需要设置不同的action
方法:在两个submit按钮的onclick事件处理过程中修改表单action属性,变更提交地址
具体实现代码:

<s:form action="" method="post" enctype="multipart/form-data">
	<s:submit value="点击上传头像" onclick="javascript:this.form.action='';"></s:submit>
	<s:submit value="提交" onclick="javascript:this.form.action='pc_submit.action';"></s:submit>
</s:form>

二、jsp

<s:file name="headImg" label="头像"></s:file>
<s:submit value="点击上传头像" onclick="javascript:this.form.action='upload_headimg.action';"></s:submit>

三、action
将上传的头像保存至服务器中,并用输入输出流读出,数据库更新。

public class UploadHeadImgAction extends ActionSupport{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private File headImg;
	private String headImgContentType;
	private String headImgFileName;
	private Individual individual;
	private FileOutputStream fos;
	private FileInputStream fis;
	
	public String execute() throws Exception{
		
		//保存至服务器
		if(headImg!=null) {
			String filePath=ServletActionContext.getServletContext().getRealPath("/upload/headImgs");
			String fileName=UUID.randomUUID().toString().replaceAll("-","")+headImgFileName.substring(headImgFileName.lastIndexOf("."));
			FileUtils.copyFile(headImg, new File(filePath,fileName));
			
			//读出图片
			fos = new FileOutputStream(filePath+"/"+fileName);
			fis = new FileInputStream(headImg);
			byte[] buffer=new byte[1024];
			int len=0;
			while((len=fis.read(buffer))!=-1) {
				fos.write(buffer, 0, len);
			}
			fos.close();
			fis.close();

			//将图片在服务器中的位置通过request传递给前端
			String img="upload/headImgs/"+fileName;
			request.setAttribute("img", img);

			//ids是IndividualDaoService的一个对象,是对数据库中individual表进行操作
			的,该处对individual表中的headurl进行更新,id为通过其他方法获取的,可根
			据自身情况获取
			ids.updateHeadUrl(id, (String)request.getAttribute("img"));
			System.out.println("headImgUrl updated.");
			return "success";
		}else {
			return "noneImg";
		}
	}
	
	public File getHeadImg() {
		return headImg;
	}
	public void setHeadImg(File headImg) {
		this.headImg = headImg;
	}
	public String getHeadImgContentType() {
		return headImgContentType;
	}
	public void setHeadImgContentType(String headImgContentType) {
		this.headImgContentType = headImgContentType;
	}
	public String getHeadImgFileName() {
		return headImgFileName;
	}
	public void setHeadImgFileName(String headImgFileName) {
		this.headImgFileName = headImgFileName;
	}
	public Individual getIndividual() {
		return individual;
	}
	public void setIndividual(Individual individual) {
		this.individual = individual;
	}
	
}

四、显示

<img alt="" src="${requestScope.img }" style="width:80px;height:80px;">

这里写了一个判断数据库中是否存在headurl来显示头像或者默认头像

<s:if test="#session.individual.headUrl==null">
		<img alt="" src="$index/images/head.png" id="head_pic"
			style="width: 40px; position: absolute; top: 25px; left: 1310px;">
</s:if>
<s:else>
		<img alt="" src="${sessionScope.individual.headUrl }" id="head_pic"
			style="width: 40px; position: absolute; top: 25px; left: 1310px;">
</s:else>
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值