java web 上传头像功能

java web 上传头像功能

第一步:导包
在这里插入图片描述
第二步:准备客户端的数据
在这里插入图片描述
在这里插入图片描述
第三步:服务器

/**
 * 上传文件Servlet
 */
@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		    HttpSession session = request.getSession();
			try {
				//判断上传表单是否为multipart/form-data类型
				if(ServletFileUpload.isMultipartContent(request))
				{
					//1. 创建DiskFileItemFactory对象,设置缓冲区大小和临时文件目录
					DiskFileItemFactory factory = new DiskFileItemFactory();
					
					//2. 创建ServletFileUpload对象,并设置上传文件的大小限制。
					ServletFileUpload fileUpload = new ServletFileUpload(factory);
					fileUpload.setSizeMax(1024*1024*10);//限制上传文件的大小 , 以byte为单位   10M,  1024byte = 1kb   1024kb = 1M   1024M=1G....
					fileUpload.setHeaderEncoding("utf-8");//设置编码格式
					
					//3. 调用ServletFileUpload.parseRequest方法解析request对象,得到一个保存了所有上传内容的List对象。
					List<FileItem> fileItemList = fileUpload.parseRequest(request);

					/**1.获取session中登陆的用户信息*/
					User user = (User)session.getAttribute("user");
					System.out.println("修改前:" + user);
					
					//4. 遍历list,每迭代一个FileItem对象,调用其isFormField方法判断是否是上传文件
					for (FileItem fileItem : fileItemList) {
						//true 普通的表单元素
						if(fileItem.isFormField())
						{
							String name = fileItem.getFieldName();//表单元素的name属性值
							String value = fileItem.getString("utf-8");//表单元素的value属性值
							
							System.out.println(name + "  " + value);
							
							/**2.获取修改的参数信息*/
							if("passengerType".equals(name))
							{
								user.setUserTypeID(Integer.valueOf(value));
							}
							else if("content".equals(name))
							{
								user.setContent(value);
							}
						}
						//false 上传的文件表单元素<input type="file">
						else
						{
							//上传文件的名称
							String fileName = fileItem.getName();
							System.out.println("源文件名称:" + fileName);//1.jpg
							
							//扩展名
							String suffix = fileName.substring(fileName.lastIndexOf("."));
							System.out.println("扩展名:" + suffix);//.jpg
							
							//新文件名称 :用户ID + 时间毫秒值  + 扩展名
							String newFileName = user.getId() + "" +new Date().getTime() + suffix;
							System.out.println("新文件名称:" + newFileName);//21570606348709.jpg
							
							//5. 调用FileItem的write()方法,写入文件   D:/apache-tomcat-7.0.73/webapps/day08_my12306/uploadFile
							File file = new File(request.getServletContext().getRealPath("uploadFile") + "/" + newFileName);
							fileItem.write(file);
							
							//6. 调用FileItem的delete()方法,删除临时文件
							fileItem.delete();
							
							/**2.获取修改的参数信息*/
							user.setImagePath("uploadFile/" + newFileName);
						}
						
					}
					System.out.println("修改后:" + user);
					
					/**3.调用service方法完成修改*/
					IUserService userService = UserServiceImpl.getInstance();
					boolean result = userService.updateUser(user);
					
					/**4.处理结果*/
					if(result)
					{
						//重新更新session中的用户信息
						session.setAttribute("user", user);
						
						//跳转回首页
						response.sendRedirect(request.getContextPath() + "/User/Index.html");
					}
					//修改失败
					else
					{
						PrintWriter writer = response.getWriter();
						writer.write("修改用户信息失败!!");
						writer.flush();
						writer.close();
					}
				}
			} catch (FileUploadException e) {
				e.printStackTrace();
			} catch (Exception e) {
				e.printStackTrace();
			}
	}
}

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值