Java Web实现 使用浏览器从服务器下载文件
Java Web实现 使用浏览器从服务器下载文件。
代码实现:
package com.juneyaoair.util;import lombok.SneakyThrows;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
public class FileUtile {/**文件下载并且浏览器导出**/@SneakyThrowspublic static void downloadFile(String file, String fileName, HttpServletResponse response, HttpServletRequest request) {OutputStream out = null;FileInputStream in = null;try {// 1.读取要下载的内容in = new FileInputStream(new File(file));// 2. 告诉浏览器下载的方式以及一些设置// 解决文件名乱码问题,获取浏览器类型,转换对应文件名编码格式,IE要求文件名必须是utf-8, firefo要求是iso-8859-1编码String agent = request.getHeader("user-agent");if (agent.contains("FireFox")) {fileName = new String(file.getBytes("UTF-8"), "iso-8859-1");} else {fileName = URLEncoder.encode(fileName, "UTF-8");}// 设置下载文件的mineType,告诉浏览器下载文件类型String mineType = request.getServletContext().getMimeType(fileName);response.setContentType(mineType);// 设置一个响应头,无论是否被浏览器解析,都下载response.setHeader("Content-disposition", "attachment; filename=" + fileName);// 将要下载的文件内容通过输出流写到浏览器out = response.getOutputStream();int len = 0;byte[] buffer = new byte[1024];while ((len = in.read(buffer)) > 0) {out.write(buffer, 0, len);}deleteFile(file);} catch (IOException e) {e.printStackTrace();} finally {if (out != null) {out.close();}if (in != null) {in.close();}}}/*** 删除单个文件** @param fileName 要删除的文件的文件名* @return 单个文件删除成功返回true,否则返回false*/public static boolean deleteFile(String fileName) {File file = new File(fileName);// 如果文件路径所对应的文件存在,并且是一个文件,则直接删除if (file.exists() && file.isFile()) {if (file.delete()) {System.out.println("删除单个文件" + fileName + "成功!");return true;} else {System.out.println("删除单个文件" + fileName + "失败!");return false;}} else {System.out.println("删除单个文件失败:" + fileName + "不存在!");return false;}}/**检查导出文件**/public String examineExportFile(String title, String[] header, List<FlightActivityVo> list) throws IOException {String pathString = this.getPathString();String pathName = pathString + File.separator + title;log.info("*******************************pathName==================>" + pathName);File file = new File(pathName);FileOutputStream fos = new FileOutputStream(file);OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");CSVFormat csvFormat = CSVFormat.DEFAULT.withHeader(header);CSVPrinter csvPrinter = new CSVPrinter(osw, csvFormat);for (FlightActivityVo flightActivityVo : list) {csvPrinter.printRecord(flightActivityVo.getOrigination(),flightActivityVo.getDestination(),flightActivityVo.getSegmentDisNumber(), flightActivityVo.getSegmentNumber(), flightActivityVo.getIntegralNumber(), flightActivityVo.getIntegralMax());}csvPrinter.flush();csvPrinter.close();log.info("导出文件创建成功");return pathName;}/**获取文件路径**/public static String getPathString() {String path = PathUtil.getRootPath();File file = new File(path);File parentFile = file.getParentFile().getParentFile().getParentFile();String pathString = "";if (parentFile.toString().startsWith("file:")) {pathString = parentFile.toString().substring(5, parentFile.toString().length());} else {pathString = parentFile.toString();}log.info("*******************************pathString==================>" + pathString);return pathString;}/**文件压缩**/public static String zipCsv(String fileName) {//定义zip压缩包ZipOutputStream zos = null;InputStream fis = null;String pathString = getPathString();String result = "";try {String zipName = "数据导出" + System.currentTimeMillis() + ".zip";zos = new ZipOutputStream(new FileOutputStream(pathString + zipName)); fis = new FileInputStream(new String((pathString + File.separator + fileName).getBytes(StandardCharsets.UTF_8),StandardCharsets.UTF_8));ZipEntry z1 = new ZipEntry(fileName);zos.putNextEntry(z1);byte[] b = new byte[1024];int leng = 0;while ((leng = fis.read(b)) != -1) {zos.write(b, 0, leng);}fis.close();zos.close();} catch (Exception e) {e.printStackTrace();} finally {if (zos != null) {try {zos.close();} catch (IOException e) {e.printStackTrace();}}if (fis != null) {try {fis.close();} catch (IOException e) {e.printStackTrace();}}}return zipName;} }
Java Web实现 使用浏览器从服务器下载文件相关推荐
- Java web中不同浏览器间导出Excel文件名称乱码问题解决方案
Java web中不同浏览器间导出Excel文件名称乱码问题解决方案 参考文章: (1)Java web中不同浏览器间导出Excel文件名称乱码问题解决方案 (2)https://www.cnblog ...
- 解决java web中safari浏览器下载后文件中文乱码问题
解决java web中safari浏览器下载后文件中文乱码问题 参考文章: (1)解决java web中safari浏览器下载后文件中文乱码问题 (2)https://www.cnblogs.com/ ...
- CentOS6中连接ftp服务器下载文件时出现了java.net.SocketException: Connection reset
问题描述:连接CentOS6中的ftp服务器下载文件时出现了java.net.SocketException: Connection reset 解决办法: 1.查看防火墙状态,发现防火墙已开启 se ...
- 记一次python后端从web服务器下载文件
记一次tornado框架python后端从web服务器下载文件过程 date 2020.7.21 Q:暂定的过程 用post方法,先前用的get,传body内文件名. 1.首先获取前端需要下载什么文件 ...
- 异步下载文件 java_在浏览器中异步下载文件监听下载进度
在浏览器中异步下载文件,其实就是把服务器响应的文件先保存在内存中.然后再一次下载到磁盘.第二次下载过程,就是把内存的数据IO到磁盘,没有网络开销.速度极快. 之所以要先保存在内存,主要是可以在下载开始 ...
- java web项目的目录结构以及各文件夹的功能是什么eclipse的web目录及各作用
创建一个javaweb项目的大致目录结构就是这样的,因为是第一次新建,我们的目录只包含了一些基础的文件夹. 然后我们看一下他们的功能是什么. test:项目名称(也可以是其他名称,尽量和自己创建的项目 ...
- 如何登陆FTP服务器下载文件
如何登陆FTP服务器下载文件 在网上我们经常可以看到很多如何搭建FTP服务器的经验,但是却缺少详细的如何登陆FTP服务器的经验,当然对于电脑熟练者来说这可能很简单,但是我想也有相当一部分人不知道如何从 ...
- 使用JSP从服务器下载文件的示例
在此示例中,我们将下载jsp文件.但是您可以下载任何文件.要从服务器下载文件,应指定名为APPLICATION / OCTET-STREAM的内容类型. index.jsp 该文件提供了下载jsp文件 ...
- ftp服务器下载文件
import java.io.*; import java.net.SocketException;import org.apache.commons.net.ftp.*; /*** ftp服务器下载 ...
最新文章
- Jackson、FastJson快速入门(整合SpringMVC)
- int main( int argc , char *argv[] , char *envp[] )中参数解说
- git cherry-pick 把提交到A分支的部分commit 再提交到B分支上
- 统计分析与spss的应用第五版数据_#统计分析与SPSS应用# 4.1.3 SPSS频数分析的扩展功能...
- python3 socketserver_python3 socketserver
- Centos7 系统下搭建.NET Core2.0+Nginx+Supervisor+Mysql环境
- 【数字信号处理】相关函数 ( 功率信号 | 功率信号的互相关函数 | 功率信号的自相关函数 )
- LeetCode --Search Insert Position
- 31. Leetcode 82. 删除排序链表中的重复元素 II (链表-双指针)
- Docker 单机网络
- Mina代码跟踪(1)
- HTML5 拖放、交换位置
- 特斯拉2019年第二季度财报出炉:今年有望降低汽车售价
- backports移植rtlwifi驱动
- 淘宝分类大全及其分组 (MySql, xls)文件,上下关系,拼写,层级,层级树,提示,2022年2月28日数据
- 2020届春招实习面经(含阿里、腾讯、网易、京东、华为、美团、快手、字节跳动)
- 学计算机独显重要吗,“集显”、“独显”对于普通电脑用户来说还那么重要吗?...
- 大点干!早点散----------深入剖析LVS负载均衡群集原理
- html火焰字效果,如何用PS制作火焰字特效
- android随机抽奖代码_基于JavaScript实现抽奖系统
热门文章
- 2017年3月17日华为内推上机考试
- 在OCI中为计算实例添加第二块网卡
- 解决HA is not enable for this namenode错误
- git push 报错Push rejected、 remote unpack failed 、unpacker error、 failed to push some refs to
- Axure8.0-制作图片验证码
- kali虚拟机如何使用桥接模式连接外网
- EasyNVR流媒体直播之:零基础实现摄像头的全平台直播 (一)内网直播的实现
- Openjudge上mooc组题目:魔兽世界:备战
- 蜘蛛能抓取thinkphp的html页面,搜索引擎的蜘蛛是如何爬的,如何吸引蜘蛛来抓取页面...
- AirServer 7.3.0中文版手机设备无线传送电脑屏幕工具