java获取上传文件的大小和时长

在java中获取上传文件的时长方法多种,在此我用其中的一种,不过需要引入一个jave.jar,此jar在maven仓库总下载不到,我保存到自己的网盘中了,链接: https://pan.baidu.com/s/1eZrV5uHCVS5M7CPpVIVKJQ 提取码: jzfe 。

获取文件大小用java自带的方法就行

在此用的框架为springMVC

@RequestMapping("uploadMusic")
@ResponseBody
public Map<String,Object> uploadMusic(HttpServletRequest request,MultipartFile music){
		//创建一个map,用于返回
		Map<String, Object> map = new HashMap<String,Object>();
		//设置初始返回map为成功,如果一下代码有异常则对map进行覆盖
		map.put("status", true);
		map.put("message", "添加音乐成功");
		//根据相对路径获取绝对路径
		String realPath = request.getSession().getServletContext().getRealPath("/cmfz/show/album/music");
		//创建一个file,用于文件上传,其实也是为了在下边获取文件大小的时候用(获取文件大小的参数类型是File,不是MultipartFile)
		File file = new File(realPath,music.getOriginalFilename());
		//文件上传
		try {
			music.transferTo(file);
		} catch (Exception e) {
			//如果文件上传失败,定义返回的map失败
			map.put("status", false);
			map.put("message", "添加音乐失败");
		}
		//计算音频时长大小
		long length = 0l;
		Encoder encoder = new Encoder();
		try {
			//getInfo()的参数是一个File,不能用MultipartFile
			//getDuration()获取得到的文件时长是一个以毫秒为单位的long类型的数值
			length = encoder.getInfo(file).getDuration();
		} catch (Exception e) {
			//如果这里有异常也定义返回的map为失败
			map.put("status", false);
			map.put("message", "添加音乐失败");
		}
		//打印一下文件时长
		System.out.println(length/1000/60+"分"+length/1000%60+"秒");
		//得到音频内存大小,是一个以字节为单位的long类型的数值
		//在此我用BigDecimal将其保留两位小数
		BigDecimal size = new BigDecimal(music.getSize());
		BigDecimal mod = new BigDecimal(1024);
		//除两个1024,保留两位小数,进行四舍五入
		size = size.divide(mod).divide(mod).setScale(2, BigDecimal.ROUND_HALF_UP);
		
		//如果需要进行入库可在接下进行代码的书写
		
		return map;
	}
发布了26 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/wazk2008/article/details/84959700