Java中Excel文件在多浏览器中下载
2018-02-06 00:00
435 查看
package com.foriseland.ec.product.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
/**
*
* @author sx
* @date 2018年1月31日下午8:52:38
*/
@Slf4j
@Controller
@RequestMapping("/fileOperation")
@Api(tags="文件操作")
public class FileOperationController {
@RequestMapping("/downLoadTemplate")
public void downLoadTemplate(HttpServletRequest request,HttpServletResponse response) {
log.info("FileOperationController ..downLoadTemplate() start");
OutputStream out=null;
FileInputStream inputStream=null;
try {
//获取模板名称
String templateName=request.getParameter("templateName");
if(templateName!=null) {
if(!(templateName.endsWith(".xls")||templateName.endsWith(".xlsx"))) {
templateName=templateName+".xlsx";
}
}
//下载后本地文件名
String fileName=request.getParameter("fileName");
if(fileName==null||fileName.trim().equals("")) {
fileName=new SimpleDateFormat("yyyyMMddhhmmmss").format(new Date()).toString();
}
if(!(fileName.endsWith(".xls")||fileName.endsWith(".xlsx"))) {
fileName+=".xls";
}
//文件名的两种处理方式,防中文乱码
fileName=new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
//fileName=URLEncoder.encode(fileName, "UTF-8");
//获取模板位置
String templatePath="D:\\upload";
//获取模板实际位置
String path=templatePath+File.separator+templateName;
//设置响应类型
response.setContentType("multipart/form-date");
//设置文件头
//response.setHeader("Content-Disposition", "attachment:fileName="+fileName);
/*判断用户浏览器,设置Content-Disposition.
if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox")>-1) {
response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''"+fileName);
System.out.println("firefox");
}else {
response.setHeader("Content-Disposition", "attachment;filename="+fileName);
}*/
//不用判断用户浏览器,设置Content-Disposition.
response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''"+fileName);
response.addHeader("Content-Type", "application/vnd.ms-excel");
//获取文件对象
File file=new File(path);
inputStream=new FileInputStream(file);
//通过response获取outputstream对象
out=response.getOutputStream();
byte[] buffer=new byte[512];
int b=inputStream.read(buffer);
while(b!=-1) {
//将指定长度字节写出到输出流中
out.write(buffer, 0, b);
b=inputStream.read(buffer);
}
inputStream.close();
out.close();
out.flush();
}catch(Exception ex) {
ex.printStackTrace();
}
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
/**
*
* @author sx
* @date 2018年1月31日下午8:52:38
*/
@Slf4j
@Controller
@RequestMapping("/fileOperation")
@Api(tags="文件操作")
public class FileOperationController {
@RequestMapping("/downLoadTemplate")
public void downLoadTemplate(HttpServletRequest request,HttpServletResponse response) {
log.info("FileOperationController ..downLoadTemplate() start");
OutputStream out=null;
FileInputStream inputStream=null;
try {
//获取模板名称
String templateName=request.getParameter("templateName");
if(templateName!=null) {
if(!(templateName.endsWith(".xls")||templateName.endsWith(".xlsx"))) {
templateName=templateName+".xlsx";
}
}
//下载后本地文件名
String fileName=request.getParameter("fileName");
if(fileName==null||fileName.trim().equals("")) {
fileName=new SimpleDateFormat("yyyyMMddhhmmmss").format(new Date()).toString();
}
if(!(fileName.endsWith(".xls")||fileName.endsWith(".xlsx"))) {
fileName+=".xls";
}
//文件名的两种处理方式,防中文乱码
fileName=new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
//fileName=URLEncoder.encode(fileName, "UTF-8");
//获取模板位置
String templatePath="D:\\upload";
//获取模板实际位置
String path=templatePath+File.separator+templateName;
//设置响应类型
response.setContentType("multipart/form-date");
//设置文件头
//response.setHeader("Content-Disposition", "attachment:fileName="+fileName);
/*判断用户浏览器,设置Content-Disposition.
if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox")>-1) {
response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''"+fileName);
System.out.println("firefox");
}else {
response.setHeader("Content-Disposition", "attachment;filename="+fileName);
}*/
//不用判断用户浏览器,设置Content-Disposition.
response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''"+fileName);
response.addHeader("Content-Type", "application/vnd.ms-excel");
//获取文件对象
File file=new File(path);
inputStream=new FileInputStream(file);
//通过response获取outputstream对象
out=response.getOutputStream();
byte[] buffer=new byte[512];
int b=inputStream.read(buffer);
while(b!=-1) {
//将指定长度字节写出到输出流中
out.write(buffer, 0, b);
b=inputStream.read(buffer);
}
inputStream.close();
out.close();
out.flush();
}catch(Exception ex) {
ex.printStackTrace();
}
}
}
相关文章推荐
- java 多excel下载 打成zip压缩包 程序中创建文件 响应到浏览器(二)
- Java通用的Excel文件生成工具类,支持生成文件和浏览器直接下载
- java实时向zip中写excel文件并通过浏览器实现下载
- Java通用的Excel文件生成工具类,支持生成文件和浏览器直接下载
- java 多excel下载 打成zip压缩包 程序中创建文件 响应到浏览器(三)
- Java通用的Excel文件生成工具类,支持生成文件和浏览器直接下载(未测试)
- java 多excel下载 打成zip压缩包 程序中创建文件 响应到浏览器
- JAVA JXL -----excel文件生成、在线打开和下载
- java 下载文件 例:excel
- Java 下载文件不在浏览器中直接打开
- java 下载文件 兼容 ie 火狐 google 浏览器 ,解决下载文件乱码问题
- java 通用文件下载 excel,pdf,word,jpg,exe,rar
- java 下载样板Excel文件
- Java strtus2文件下载不同浏览器文件名中文乱码处理
- 解决ie下载excel文件直接在浏览器打开的问题(tomcat,web项目)
- Java 实现生成Excel,以下载方式返回浏览器本地
- Java防止浏览器直接打开下载的文件
- java下载文件在各个浏览器差异 以及中文乱码解决
- java防止浏览器直接打开下载的文件
- Java中浏览器的文件下载时文件名乱码问题