//获取文件输出流
FileOutputStream fos = new FileOutputStream(savePath);
/*String newFileName = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ "/"+path+"/" + newName;*/
String fileId=newName.substring(0, newName.lastIndexOf("."));
String accessPath = request.getContextPath();
String newFileName = serverProtocol + "://"+ serverIP + ":" + serverPort+ "/"+accessPath+downloadAction+"?fileId="+fileId+"&name="+fileName;
System.out.println("downLoadURL-------->"+newFileName);
byte[] buffer = new byte[1024];
//获取内存中当前文件输入流
InputStream in = new FileInputStream(file);
try {
int num = 0;
while ((num = in.read(buffer)) > 0) {
fos.write(buffer, 0, num);
}
} catch (Exception e) {
e.printStackTrace(System.err);
} finally {
in.close();
fos.close();
}
return newFileName;
}
/**
* 获取视频截图
* @param ffmpegPath
* ffmpeg工具存放路径
* @param videoPath
* 视频的存放路径
* @param imagePath
* 截图要存放的路径
* @return 截图名字(包括路径)
*/
public static String getVideoScreenShot(String ffmpegPath,String videoPath,String imagePath)
{
ffmpegPath = ffmpegPath.replaceAll("/", "\\\\");
videoPath = videoPath.replaceAll("/", "\\\\");
imagePath = imagePath.replaceAll("/", "\\\\");
final Lock lock = new ReentrantLock();
String imageName = null;
lock.lock();
try {
//加锁为防止文件名重复
imageName = imagePath+Long.toString(System.currentTimeMillis())+".jpg";
}finally {
lock.unlock();
}
System.out.println("ffmpegPath--->"+ffmpegPath);
System.out.println("videoPath--->"+videoPath);
System.out.println("imagePath--->"+imageName);
//String cmd="cmd /c start "+"D:\\file\\ffmpeg\\ffmpeg.exe -i D:\\file\\ffmpeg\\aa.3gp -ss 10 -vframes 1 -r 1 -ac 1 -ab 2 -s 320x240 -f image2 D:\\file\\ffmpeg\\test.jpg";
String cmd="cmd /c start "+ffmpegPath+" -i "+videoPath+" -ss 10 -vframes 1 -r 1 -ac 1 -ab 2 -s 180x230 -f image2 "+imageName;
try {
Process pr = Runtime.getRuntime().exec(cmd);
pr.getInputStream();
Thread.sleep(15000);
File f = new File(imageName);
if (f.exists()) {
// f.delete();
System.out.println("file exists");
return imageName;
} else {
// f.createNewFile();
System.out.println("file not exists");
return "";
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
分享到:
相关推荐
java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件上传工具类java 文件...
java 文件上传工具类 java 文件上传工具类java 文件上传工具类 java 文件上传工具类java 文件上传工具类 java 文件上传工具类java 文件上传工具类 java 文件上传工具类java 文件上传工具类 java 文件上传工具类java ...
java io 文件上传工具类
文件上传工具类,上传文件,上传导入文件到path文件夹下,判断图片大小是否超过要求,上传多张图片到服务器,上传图片到服务器,上传文件(在指定目录下创建年月日目录),上传导入文件到temp文件夹下,删除指定...
此外,为了优化性能,文件上传工具类可能使用了多线程或者异步处理。Java的并发API,如`ExecutorService`、`Future`和`Callable`,可以帮助我们有效地管理这些任务。同时,工具类也可能实现了进度更新接口,以便在上...
分片上传文件工具类,对应文章为:https://blog.csdn.net/y534560449/article/details
这个工具类结合了文件上传、JSON解析以及Form表单提交等技术,提供了强大的文件处理能力。 首先,让我们来了解一下文件上传的基本流程。在JavaWeb中,文件上传通常涉及到Servlet和HTTP协议。用户在HTML表单中选择...
以下是对"java文件上传下载工具类"这一主题的详细解释。 首先,让我们了解文件上传。在Web应用中,用户可能需要上传文件,如图片、文档或视频。Java通过Servlet API提供了处理文件上传的功能。Servlet 3.0及以上...
Android上传文件工具类
Java文件工具类
本篇文章将详细探讨如何利用Socket实现一个强大的文件上传工具类,以及涉及到的相关知识点。 一、Socket基础知识 Socket,也被称为套接字,是网络通信中的一个抽象概念,它代表了两台机器间通信的一个端点。在Java...
在创建一个上传工具类时,首先需要确保表单正确设置了`enctype="multipart/form-data"`,这是上传文件所必需的。然后,我们需要在服务器端处理`$_FILES`数组,检查文件是否上传成功,是否有错误,以及文件的大小和...
该工具类使用httpclient进行http or https请求,包括requestbody格式和form表单格式,另外含文件服务器中转上传方法,几乎支持所有常用接口调用,内含详细注释和说明文件,含jar包,及maven方式引用,拿过去直接用吧
下面我们将深入探讨如何使用Apache Commons FileUpload创建一个基于Java的文件上传工具类。 首先,我们需要引入Apache Commons FileUpload和Apache Commons IO库。这两个库可以通过Maven或Gradle添加为依赖,或者...
封装springmvc上传单文件、多文件保存,保存文件时(文件夹路径不存在则创建),会改变文件名,使用起来非常方便。
MinIO通用上传工具类
主要用于图片的上传和下载,也可以用于文件的上传和下载
java 上传文件工具类 java 上传文件工具类java 上传文件工具类 java 上传文件工具类java 上传文件工具类 java 上传文件工具类