java 下载文件的两种方式和java文件的上传
一:以网络的方式下载文件
try { // path是指欲下载的文件的路径。
File file = new File(path);
// 以流的形式下载文件。
InputStream fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes()));
response.addHeader("Content-Length", "" + file.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException ex) {
ex.printStackTrace();
}
return response;
二:下载本地文件
File outFile = new File(path);
if(!outFile.exists()){
return new ReturnResponse<String>(0, "FAILURE","文件不存在");
}
OutputStream outputStream = null;
try {
response.setContentType("application/x-download");
response.addHeader("Content-Disposition", "attachment;filename="+fileName);
outputStream = response.getOutputStream(); byte[] filebytes = org.apache.commons.io.FileUtils.readFileToByteArray(outFile);
outputStream.write(filebytes);
outputStream.flush(); return new ReturnResponse<String>(0, "SUCCESS","");
} catch (IOException e) {
e.printStackTrace();
return new ReturnResponse<String>(0, "FAILURE","读取文件失败");
}finally{
if(outputStream!=null){
outputStream.close();
}
}
}
三:文件的上传
//获取文件信息和存储路径
String fileName = file.getOriginalFilename();
File outFile = new File(path);
if (!outFile.exists()) {
outFile.mkdirs();
} //保存文件
String newFileName = UUIDUtil.uuid()+fileUtils.getSuffixFromFileName(fileName);
String filepath = Paths.get(outFile.getPath(), newFileName).toString();
BufferedOutputStream stream =
new BufferedOutputStream(new FileOutputStream(new File(filepath)));
stream.write(file.getBytes());
stream.close();
四:文件的删除
File file = new File(path);
if (file.exists() && file.isFile()) {
if (file.delete()) {
return new ReturnResponse<String>(0, "删除成功!","");
} else {
return new ReturnResponse<String>(0, "删除失败!","");
}
} else {
return new ReturnResponse<String>(0, "删除失败:文件不存在!","");
}
java 下载文件的两种方式和java文件的上传的更多相关文章
- 对Java代码加密的两种方式,防止反编译
使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的j ...
- Eclipse项目中引用第三方jar包时将项目打包成jar文件的两种方式
转载自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html 方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFES ...
- 加载xib文件的两种方式
一.加载xib文件的两种方式 1.方法一(NewsCell是xib文件的名称) NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@&quo ...
- js 图片base64转file文件的两种方式
js 图片base64转file文件的两种方式 https://blog.csdn.net/yin13037173186/article/details/83302628 //将base64转换为bl ...
- Java新建线程的两种方式
Java新建线程有两种方式,一种是通过继承Thread类,一种是实现Runnable接口,下面是新建线程的两种方式. 我们假设有个竞赛,有一个选手A做俯卧撑,一个选手B做仰卧起坐.分别为两个线程: p ...
- jsp:jsp包含文件的两种方式
第一种:include指令 include指令:当JSP转换成Servlet时引入指定文件(指令元素),这是一种静态包含,它运行的时候不会单独编译成.class文件,它生成一个新的整体.class文件 ...
- Springboot 创建的maven获取resource资源下的文件的两种方式
Springboot 创建的maven项目 打包后获取resource下的资源文件的两种方式: 资源目录: resources/config/wordFileXml/wordFileRecord.xm ...
- 两种方式实现java生成Excel
Web应用中难免会遇到需要将数据导出并生成excel文件的需求.同样,对于本博客中的总结,也是建立在为了完成这样的一个需求,才开始去了解其实现形式,并且顺利完成需求的开发,先将实现过程总结于此.本博文 ...
- springMVC两种方式实现多文件上传及效率比较
springMVC实现 多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实 现多文件上传效率上却有着很大的 ...
随机推荐
- tagName()方法详解
1.该方法可以通过元素的标签名称来查找元素.这个方法搜索到的元素通常不止一个,所以一般建议结合使用findElements方法来使用: driver.findElement(By.xpath(&quo ...
- WebService SOAP WSDL UDDI 使用php的curl、PHP5的SoapClient实现同步
一.基本名词 WebService: WebService是一种跨编程语言和跨操作系统平台的远程调用技术.不同系统,不同语言的数据交换方法都是不同的,这就导致在不同系统,不同语言之间传递数据很麻烦,基 ...
- Python(内置函数)
python英文官方文档详细说明:点击查看 lambda: map (加工,将各元素通过function加工后输出) map(function, iterable,...) reduce (综合,将后 ...
- Php ArrayIterator的几个常用方法
搜索商低..从php.net找到 ,自己翻译一下 总结在一起 rewind() 指针回到初始位置 valid() 判断数组当前指针下是否有元素 key() 数组键 ...
- 微信小程序组件button
表单组件button:官方文档 Demo Code: var types=['default', 'primary', 'warn']; var pageObject = { data: { defa ...
- Educational Codeforces Round 11C. Hard Process two pointer
地址:http://codeforces.com/contest/660/problem/C 题目: You are given an array a with n elements. Each el ...
- svn / git SourceTree
开发使用SourceTree 忽略文件这块老弄错,这次专门博客一下,使用CocoaPods 开发项目, 忽略步骤如下: 忽略文件内容如下 *.xcworkspace xcuserdata *.loc ...
- Building an FTP Test Plan
参考:http://jmeter.apache.org/usermanual/build-ftp-test-plan.html 1.创建一个线程组 2.线程组--->添加--->配置元件- ...
- Mahout 分类算法
实验简介 本次课程学习了Mahout 的 Bayes 分类算法. 一.实验环境说明 1. 环境登录 无需密码自动登录,系统用户名 shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu ...
- EFM32JG系列MCU内部温度传感器使用方法
在很多电子类应用场合中,我们经常需要采集产品工作的周围环境温度,一般采取的方式有两种: 1)外加温度传感器 2)采用MCU内部温度传感器 外加温度传感器会增加产品的成本以及布板空间,所以在很多场合,我 ...