java视频上传_Java上传视频

importjava.io.File;importjava.io.IOException;importjava.sql.Timestamp;importjava.text.DecimalFormat;importjava.util.Arrays;importjava.util.Iterator;importjavax.servlet.http.HttpServletRequest;importmodel.FileEntity;importorg.springframework.web.multipart.MultipartFile;public classFileUploadTool {

TransfMediaTool transfMediaTool= newTransfMediaTool();//文件最大500M

private static long upload_maxsize = 800 * 1024 * 1024;//文件允许格式

private static String[] allowFiles = { ".rar", ".doc", ".docx", ".zip",".pdf", ".txt", ".swf", ".xlsx", ".gif", ".png", ".jpg", ".jpeg",".bmp", ".xls", ".mp4", ".flv", ".ppt", ".avi", ".mpg", ".wmv",".3gp", ".mov", ".asf", ".asx", ".vob", ".wmv9", ".rm", ".rmvb"};//允许转码的视频格式(ffmpeg)

private static String[] allowFLV = { ".avi", ".mpg", ".wmv", ".3gp",".mov", ".asf", ".asx", ".vob"};//允许的视频转码格式(mencoder)

private static String[] allowAVI = { ".wmv9", ".rm", ".rmvb"};publicFileEntity createFile(MultipartFile multipartFile, HttpServletRequest request) {

FileEntity entity= newFileEntity();boolean bflag = false;

String fileName=multipartFile.getOriginalFilename().toString();//判断文件不为空

if (multipartFile.getSize() != 0 && !multipartFile.isEmpty()) {

bflag= true;//判断文件大小

if (multipartFile.getSize() <=upload_maxsize) {

bflag= true;//文件类型判断

if (this.checkFileType(fileName)) {

bflag= true;

}else{

bflag= false;

System.out.println("文件类型不允许");

}

}else{

bflag= false;

System.out.println("文件大小超范围");

}

}else{

bflag= false;

System.out.println("文件为空");

}if(bflag) {

String logoPathDir= "/video/";

String logoRealPathDir=request.getSession().getServletContext().getRealPath(logoPathDir);//上传到本地磁盘//String logoRealPathDir = "E:/upload";

File logoSaveFile = newFile(logoRealPathDir);if (!logoSaveFile.exists()) {

logoSaveFile.mkdirs();

}

String name= fileName.substring(0, fileName.lastIndexOf("."));

System.out.println("文件名称:" +name);//新的文件名

String newFileName = this.getName(fileName);//文件扩展名

String fileEnd = this.getFileExt(fileName);//绝对路径

String fileNamedirs = logoRealPathDir + File.separator + newFileName +fileEnd;

System.out.println("保存的绝对路径:" +fileNamedirs);

File filedirs= newFile(fileNamedirs);//转入文件

try{

multipartFile.transferTo(filedirs);

}catch(IllegalStateException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}//相对路径

entity.setType(fileEnd);

String fileDir= logoPathDir + newFileName +fileEnd;

StringBuilder builder= newStringBuilder(fileDir);

String finalFileDir= builder.substring(1);//size存储为String

String size = this.getSize(filedirs);//源文件保存路径

String aviPath =filedirs.getAbsolutePath();//转码Avi//boolean flag = false;

if (this.checkAVIType(fileEnd)) {//设置转换为AVI格式后文件的保存路径

String codcAviPath = logoRealPathDir + File.separator + newFileName + ".avi";//获取配置的转换工具(mencoder.exe)的存放路径

String mencoderPath = request.getSession().getServletContext().getRealPath("/tools/mencoder.exe");

aviPath=transfMediaTool.processAVI(mencoderPath, filedirs.getAbsolutePath(), codcAviPath);

fileEnd= this.getFileExt(codcAviPath);

}if (aviPath != null) {//转码Flv

if (this.checkMediaType(fileEnd)) {try{//设置转换为flv格式后文件的保存路径

String codcFilePath = logoRealPathDir + File.separator + newFileName + ".flv";//获取配置的转换工具(ffmpeg.exe)的存放路径

String ffmpegPath = request.getSession().getServletContext().getRealPath("/tools/ffmpeg.exe");

transfMediaTool.processFLV(ffmpegPath, aviPath, codcFilePath);

fileDir= logoPathDir + newFileName + ".flv";

builder= newStringBuilder(fileDir);

finalFileDir= builder.substring(1);

}catch(Exception e) {

e.printStackTrace();

}

}

entity.setSize(size);

entity.setPath(finalFileDir);

entity.setTitleOrig(name);

entity.setTitleAlter(newFileName);

Timestamp timestamp= newTimestamp(System.currentTimeMillis());

entity.setUploadTime(timestamp);returnentity;

}else{return null;

}

}else{return null;

}

}/*** 文件类型判断

*

*@paramfileName

*@return

*/

private booleancheckFileType(String fileName) {

Iterator type =Arrays.asList(allowFiles).iterator();while(type.hasNext()) {

String ext=type.next();if(fileName.toLowerCase().endsWith(ext)) {return true;

}

}return false;

}/*** 视频类型判断(flv)

*

*@paramfileName

*@return

*/

private booleancheckMediaType(String fileEnd) {

Iterator type =Arrays.asList(allowFLV).iterator();while(type.hasNext()) {

String ext=type.next();if(fileEnd.equals(ext)) {return true;

}

}return false;

}/*** 视频类型判断(AVI)

*

*@paramfileName

*@return

*/

private booleancheckAVIType(String fileEnd) {

Iterator type =Arrays.asList(allowAVI).iterator();while(type.hasNext()) {

String ext=type.next();if(fileEnd.equals(ext)) {return true;

}

}return false;

}/*** 获取文件扩展名

*

*@returnstring*/

privateString getFileExt(String fileName) {return fileName.substring(fileName.lastIndexOf("."));

}/*** 依据原始文件名生成新文件名

*@return

*/

privateString getName(String fileName) {

Iterator type =Arrays.asList(allowFiles).iterator();while(type.hasNext()) {

String ext=type.next();if(fileName.contains(ext)) {

String newFileName= fileName.substring(0, fileName.lastIndexOf(ext));returnnewFileName;

}

}return "";

}/*** 文件大小,返回kb.mb

*

*@return

*/

privateString getSize(File file) {

String size= "";long fileLength =file.length();

DecimalFormat df= new DecimalFormat("#.00");if (fileLength < 1024) {

size= df.format((double) fileLength) + "BT";

}else if (fileLength < 1048576) {

size= df.format((double) fileLength / 1024) + "KB";

}else if (fileLength < 1073741824) {

size= df.format((double) fileLength / 1048576) + "MB";

}else{

size= df.format((double) fileLength / 1073741824) + "GB";

}returnsize;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值