在java中获取上传文件的时长方法多种,在此我用其中的一种,不过需要引入一个,此jar在maven仓库总下载不到,我保存到自己的网盘中了,链接: /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进行覆盖
("status", true);
("message", "添加音乐成功");
//根据相对路径获取绝对路径
String realPath = ().getServletContext().getRealPath("/cmfz/show/album/music");
//创建一个file,用于文件上传,其实也是为了在下边获取文件大小的时候用(获取文件大小的参数类型是File,不是MultipartFile)
File file = new File(realPath,());
//文件上传
try {
(file);
} catch (Exception e) {
//如果文件上传失败,定义返回的map失败
("status", false);
("message", "添加音乐失败");
}
//计算音频时长大小
long length = 0l;
Encoder encoder = new Encoder();
try {
//getInfo()的参数是一个File,不能用MultipartFile
//getDuration()获取得到的文件时长是一个以毫秒为单位的long类型的数值
length = (file).getDuration();
} catch (Exception e) {
//如果这里有异常也定义返回的map为失败
("status", false);
("message", "添加音乐失败");
}
//打印一下文件时长
(length/1000/60+"分"+length/1000%60+"秒");
//得到音频内存大小,是一个以字节为单位的long类型的数值
//在此我用BigDecimal将其保留两位小数
BigDecimal size = new BigDecimal(());
BigDecimal mod = new BigDecimal(1024);
//除两个1024,保留两位小数,进行四舍五入
size = (mod).divide(mod).setScale(2, BigDecimal.ROUND_HALF_UP);
//如果需要进行入库可在接下进行代码的书写
return map;
}