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;
	}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

难过的风景

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值