第二天来解决bug

`先看昨天的问题: 今天写springboot项目时,我在写这项功能时遇到了一个bug,我写的图片上传功能选择图片后会将该图片给命名为headpic.(他们自带的后缀名),每次重新保存信息的时候一位上传到保存地址一样,我保存文件的命名又一样,这样就会默认替换原来的文件,因为文件名一样,不过图片是换了的,但是换了图片后,也就是重新上传图片后,就会有一个奇怪的bug这里是引用!

在这里插入图片描述
再次保存选择后的图片后,发现我选择的图片已经替换掉了原来的图片了,在系统的绝对路径中,就像文件夹显示的,文件夹里只有一个图片,但是浏览器按照地址加载后,因为地址和文件名都没有改变,浏览器加载出来的图片竟然没有改变,而绝对路径和项目下的映射文件夹都没有加载出来的这一张图片,难道是浏览器没有检测到img标签的src有改变,因此加载的图片是缓存?这是我的猜测,明天再做测试检验。洗洗睡了,都要十一点了。。
在这里插入图片描述
第二天的解决过程:按照我昨天的思路,我就打算直接在图片重名命名中加了这样的代码:
// 更改为固定格式的文件名,时间+“headpic.”+后缀名 Date now=new Date(); String headpicname = "headpic_"+String.valueOf(now.getTime())+"." + suffix; headpic.transferTo(new File(path + File.separator + headpicname));
之前我写的保存文件的方法都写在了controller里面,这次我写在了service,很多controller都可以调用它,感觉这样舒服多了,减少了代码量,提高了可读性,看来我也在像高手爬啊。结果问题就解决了,
在这里插入图片描述
这样每次改变图片浏览器都会检测到img控件的src发生了改变,就会显示改变了。下面是我写的方法,代码很多就随便贴一点出来了,在这里插入代码片

//此方法用来将图片上传到想要保存的地址
	public String recruiterSavePicture(String username, String pictureType,String suffix,MultipartFile headpic)throws ServletException, IOException {
		//上面的参数分别是用户名,想要删除的图片包含的字段,文件后缀名,图片文件,文件的校验不在这里,在传参数之前一定要校验
		String path = "E:\\workplace\\j2ee\\studeySystem\\src\\main\\resources\\static\\userFile\\recruiters\\"+ username;
		//保存的地址,需要在springboot的配置里声明映射关系,浏览器才能使用
		File file = new File(path);
		// 判断上传文件的保存目录是否存在
		if (!file.exists() && !file.isDirectory()) {
			System.out.println(path + "目录不存在,需要创建");
			// 创建目录
			file.mkdir();
		} // 已存文件夹就删除想删除的文件
		else {
			for (File fil : file.listFiles()) {
				String filname = fil.getName();
				if (filname.contains(pictureType)) {//如果文件名包含我要删除的文件的一部分,例如我想删除包含“headpic”字段的文件。
					deleteFile(fil);//那就删除它
				}
			}
		}
		// 更改为固定格式的文件名,时间+“headpic.”+后缀名
		Date now=new Date();
		String headpicname = "headpic_"+String.valueOf(now.getTime())+"." + suffix;
		headpic.transferTo(new File(path + File.separator + headpicname));
		return "/userFile/recruiters/"+username+"/"+headpicname;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值