1.java中获取上传文件的大小,时长
在java中获取上传文件的时长方法多种,在此我用其中的一种,不过需要引入一个jave.jar,此jar在maven仓库总下载不到,我保存到自己的网盘中了,链接: https://pan.baidu.com/s/1eZrV5uHCVS5M7CPpVIVKJQ 提取码: jzfe 。
maven方式获取jar包
<!-- https://mvnrepository.com/artifact/it.sauronsoftware/jave -->
<dependency>
<groupId>it.sauronsoftware</groupId>
<artifactId>jave</artifactId>
<version>1.0.2</version>
</dependency>
获取文件大小用java自带的方法就行
在此用的框架为springMVC
package com.baizhi.zcn.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.HashMap;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RequestMapping("/uploads")
@RestController
public class UploadController {
private HashMap<String, Object> map = new HashMap<String,Object>();
//文件上传
@RequestMapping("fileUpload")
public HashMap<String,Object> fileUpload(MultipartFile audio,HttpServletRequest request){
try{
//获取文件名
String filename = audio.getOriginalFilename();
//根据相对路径获取绝对路径
String realPath = request.getSession().getServletContext().getRealPath("/audios");
//判断文件夹是否存在
File file = new File(realPath);
if(!file.exists()){
file.mkdir();
}
String sname = new Date().getTime()+"-"+filename;
//获取音频大小 zijie
long size = audio.getSize();
System.out.println("文件大小 :"+size);
//=========1========
String sizes = size/1024/1024+"MB";
System.out.println("文件大小 :"+sizes);
//=========2========
DecimalFormat format = new DecimalFormat("0.00");
String str = String.valueOf(size);
Double dd = Double.valueOf(str)/1024/1024;
String sizess = format.format(dd)+"MB";
System.out.println("文件大小 :"+sizess);
//=========3========
DecimalFormat df = new DecimalFormat("0.00");
Double a = Double.valueOf(String.valueOf(size))/1024/1024;
if(a>1024){
a= a/1024;
System.out.println("文件大小为: "+df.format(a)+"GB");
}else
System.out.println("文件大小为: "+df.format(a)+"MB");
//=========4========
BigDecimal sizez = new BigDecimal(audio.getSize());
BigDecimal mod = new BigDecimal(1024);
//除两个1024,保留两位小数,进行四舍五入
BigDecimal setScale = sizez.divide(mod).divide(mod).setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("文件大小为: "+setScale+"MB");
//文件上传
audio.transferTo(new File(realPath,sname));
//获取文件时长
Encoder encoder = new Encoder();
long length = encoder.getInfo(new File(realPath,sname)).getDuration();
//输出文件时长
System.out.println("==length=="+length+"毫秒");
System.out.println("==length/1000=="+length/1000+"秒");
System.out.println("==length=="+length/1000/60+"分"+length/1000%60+"秒");
map.put("success", 200);
map.put("message", "上传成功");
} catch (Exception e) {
map.put("success", 400);
map.put("message", "上传失败");
}
return map;
}
}
2.如果上边方式获取不了文件时长,可以试试下面的这种方式:
2.1.导入maven依赖
<!--获得时长需要的jar-->
<dependency>
<groupId>org</groupId>
<artifactId>jaudiotagger</artifactId>
<version>2.0.3</version>
</dependency>
2.1.获取文件时长
//获取文件时长 分
AudioFile audioFile = AudioFileIO.read(new File(realPath, filename));
AudioHeader audioHeader = audioFile.getAudioHeader();
int length = audioHeader.getTrackLength();
String duration=length/60+"分"+length%60+"秒";
3.文件下载
//下载音频
@RequestMapping("downloadAudio")
public void downloadAudio(String fileName,HttpServletRequest request,HttpServletResponse response){
//根据用户名去服务器中的指定位置获取文件
String realPath = request.getSession().getServletContext().getRealPath("/upload/audios");
//读取文件输入流
FileInputStream fis = null;
try {
fis = new FileInputStream(new File(realPath, fileName));
//设置响应的方式 响应头 //attachment;以附件形式下载 inline 在线打开
response.setHeader("content-disposition","attachment;fileName=" + URLEncoder.encode(fileName,"UTF-8"));
//下载文件
IOUtils.copy(fis,response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
4.音频在线打开
除了用下载的方式 配置inline 打开音频,已外还可以直接使用<audio>标签直接打开
4.1.可以使用标签的方式直接打开音频
<%--在线播放音频--%>
<div id="playAudioDiv" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<audio id="playAudioId" src="" controls></audio>
</div>
</div>
4.2.调用方法传入音频路径即可
function playAudio(url) {
/*展示音频标签*/
$("#playAudioDiv").modal("show");
/*传入音频路径*/
$("#playAudioId").attr("src", "${path}/upload/audios/" + url);
}
版权声明:本文为qq_42191775原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。