java文件上传获取文件大小,文件时长

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

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

在此用的框架为springMVC


文件的上传

package com.qp.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;
	}	
}

文件的下载

//下载音频
	@RequestMapping("downloadAudio")
	public void downloadAudio(String fileName,HttpServletRequest request,HttpServletResponse response) throws Exception{
		
		System.out.println("==========fileName="+fileName);
 
		//根据用户名去服务器中的指定位置获取文件
        String realPath = request.getSession().getServletContext().getRealPath("/audios");
        
        //读取文件输入流
        FileInputStream fis = new FileInputStream(new File(realPath, fileName));
        
        //设置响应的方式   响应头   //attachment;以附件形式下载   inline 在线打开
        response.setHeader("content-disposition","attachment;fileName=" + URLEncoder.encode(fileName,"UTF-8"));
        
        //获取响应流
        ServletOutputStream os = response.getOutputStream();
        //下载文件
        IOUtils.copy(fis,os);
        //关闭资源
        IOUtils.closeQuietly(fis);
        IOUtils.closeQuietly(os);
	}

猜你喜欢

转载自blog.csdn.net/qphelloworld/article/details/88903727