2021-01-30

关于上传图片到webContent里面的文件夹images

这篇文章也是看了诸多大神的代码所写的,主要代码还是一位大神的,至于名字我忘记了,以下是代码

  1. 首先先要导入俩个包commons-fileupload-1.3.1.jar和commons-io-2.4.jar这两个包,搜一下的话还是有人发下载链接的
  2. 其次关于这篇文章我也不是懂的很多,只能说我也是刚学会一点,也不敢称大神
  3. 代码最后还是能出图片的
  4. form表单要设置enctype="multipart/form-data"这个属性,设置这个属性后,你的servlet代码就不能通过request.getParameter(name)来获取值了,不过方向,代码中包含了解决方法。
      //收集数据的容器
		Map<String,Object> map = new HashMap<String, Object>();
		//创建磁盘工厂
		DiskFileItemFactory factory = new DiskFileItemFactory();
		//创建文件上传核心对象
		ServletFileUpload upload = new ServletFileUpload(factory);
		//解析request集合
		List<FileItem> parseRequest = null;
		try {
			parseRequest = upload.parseRequest(request);
		} catch (FileUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//遍历request集合
		for (FileItem fileItem : parseRequest) {
			//判断是普表单项还是文件表单项
			boolean formField = fileItem.isFormField();
			if(formField){//是普通表单项
				String fieldName = fileItem.getFieldName();//获取表单项名字,也就是平时getParameter的那个name
				String stringValues = fileItem.getString("utf-8");//获取表单项的值,平时getParameter的那个name返回的值当然要编码
				map.put(fieldName, stringValues);//设置到map,取出一个name你就得将这个值添加到上面定义的map中,用于后面进行封装
			}else{//是文件上传的表单项
				//获取上传的文件名字
				String name = fileItem.getName().substring(fileItem.getName().lastIndexOf("."));
				//随机一个唯一的名字给图片重新命名,以免重复
				String imgName = UUID.randomUUID() + name;
				//设置保存路径,也就是你根路径底下的一个文件夹中
				String realPath = getServletContext().getRealPath("images/customer");
				//获取输入流读取文件
				InputStream inputStream = fileItem.getInputStream();
				//创建输出流写入文件,路径/图片名字
				OutputStream outputStream = new FileOutputStream(realPath+"/"+imgName);
				//将文件写入到images中
				IOUtils.copy(inputStream, outputStream);
				//关流
				inputStream.close();
				outputStream.close();
				fileItem.delete();
				//根据对象保存路径~(相对路径),一般数据库中的图片字段都是相对路径.总之添加数据时根据你数据库图片字段的格式添加,这里                       的路径可以自己更改
				map.put("productImg", "http://localhost:8080/kankanjavaweb/images/customer/"+imgName);
				
			}
		}
  • 代码就到这里就可以完成图片上传,另外强调,关于表格其他的数据,可以通过map.get(“name”)来获取,这里的name就是表单中<input … name="">这里面的值,自己起的,然后就可以调用自己封装的增删改查的方法了
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值