下载excel、压缩包等

java后台实现下载图片等,用io很容易实现,不太容易出现乱码,但是通过http响应,在浏览器上下载到用户的客户端,用out下载的话,报头设置不对很容易出现乱码;

下载其他文件都是类似;

 

压缩包下载

<%@ page language="java"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.net.*"%>
<%
	String fileName = request.getParameter("filename");
	response.setHeader("Content-Type", "application/zip");
	response.setHeader("Content-disposition",
			"attachment; filename="+fileName+".zip");
	java.io.FileInputStream fileInputStream = new java.io.FileInputStream(
			request.getRealPath("/tempimg/"+fileName+".zip"));
	int i;
	while ((i = fileInputStream.read()) != -1) {
		out.write(i);
	}
	fileInputStream.close();
%>


 

excel下载

<%@ page language="java"%>
<%@ page contentType="application/msexcel;charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.net.*"%>

<%@ page import="java.io.*"%>

<%



	request.setCharacterEncoding("utf-8");
	String filename = request.getParameter("filename");
	filename = new String(filename.getBytes("ISO-8859-1"),"UTF-8"); 
	System.out.println(filename);
	OutputStream o=response.getOutputStream();
	byte b[]=new byte[500];
	/** * 得到文件的当前路径 * @param args */ 
	//String serverpath=request.getRealPath("\\"); 
	File fileLoad=new File(request.getRealPath("/tempimg/"+filename+".xls"));
	response.setContentType("application/octet-stream");
<span style="background-color: rgb(255, 255, 51);">//application/vnd.ms-excel也可以,参考</span><a target=_blank href="http://tool.oschina.net/commons"><span style="background-color: rgb(255, 255, 51);">http://tool.oschina.net/commons</span></a><span style="background-color: rgb(255, 255, 51);">(HTTP Content-type对照表)</span>
 	response.setHeader("content-disposition","attachment; filename="+filename+".xls");
<span style="background-color: rgb(255, 255, 51);">//提示下载,如果把filename去掉,也会正常下载,仅仅是指定默认保存的文件名;但是content-disposition不能缺少</span>
	long fileLength=fileLoad.length();
	String length1=String.valueOf(fileLength);
	response.setHeader("Content_Length",length1);
	FileInputStream in=new FileInputStream(fileLoad);
	int n;
	while((n=in.read(b))!=-1){
	   o.write(b,0,n);
	}
	System.out.println("wanleewan");
	in.close();
	out.clear();
	<span style="color:#ff0000;background-color: rgb(255, 255, 51);">out = pageContext.pushBody();
</span>
<span style="color:#ff0000;background-color: rgb(255, 255, 51);">//不加有时候会报错</span>




			
	
	/* //输入流			
	java.io.FileInputStream fileInputStream = new java.io.FileInputStream(
			request.getRealPath("/tempimg/"+fileName+".xls"));
	FileOutputStream fileOutputStream = new FileOutputStream("G:\\log.xls",true);	
	int i;
	while ((i = fileInputStream.read()) != -1) {
		//out.write(i);
		fileOutputStream.write(i);
	}
	System.out.println("输出完了");
	fileOutputStream.close();
	fileInputStream.close(); */
	
	
	
	
	//不行!!!还是用字节流可行
	/* //输入流			
	FileReader reader=new FileReader(request.getRealPath("/tempimg/"+fileName+".xls"));
	PrintWriter writer=new PrintWriter("G:\\log2.xls");
	int i;
	while ((i = reader.read()) != -1) {
		//out.write(i);
		writer.write(i);
	}
	System.out.println("输出完了");
	reader.close();
	writer.close(); */
	
	
%>	




 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.获取PHPExcel 2.添加如下方法: function Excel_Export($filename,$data,$sheet){ error_reporting(E_ALL); ini_set('display_errors','On'); /** Include path **/ set_include_path(get_include_path() . PATH_SEPARATOR . '../Classes/'); /** PHPExcel */ include 'api/excel/PHPExcel.php'; /** PHPExcel_Writer_Excel2007 */ include 'api/excel/PHPExcel/Writer/Excel2007.php'; // Create new PHPExcel object //echo date('H:i:s') . "Create new PHPExcel object\n"; $objPHPExcel = new PHPExcel(); // Set properties //echo date('H:i:s') . "Set properties\n"; $objPHPExcel->getProperties()->setCreator("E421083458"); $objPHPExcel->getProperties()->setLastModifiedBy("E421083458"); $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document"); $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document"); $objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes."); $objPHPExcel->getProperties()->setKeywords("office 2007 openxml php"); $objPHPExcel->getProperties()->setCategory("Test result file"); // Add some data //echo date('H:i:s') . "Add some data\n"; $objPHPExcel->setActiveSheetIndex(0); $charlist = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); //print_r($data); foreach($data as $key=>$value){ $j=0; if($key==0){ foreach($value as $k=>$v){ if($j<25){ $objPHPExcel->getActiveSheet()->setCellValue($charlist[$j].($key+1), mb_convert_encoding($k, "UTF-8", "GBK")); $j++; } } $j=0; } foreach($value as $k=>$v){ if($j<25){ //echo $charlist[$j].($key+1)."<br/>"; //echo $v."<br/>"; $objPHPExcel->getActiveSheet()->setCellValue($charlist[$j].($key+2), mb_convert_encoding($v, "UTF-8", "GBK")); $j++; } } } // Rename sheet //echo date('H:i:s') . "Rename sheet\n"; $objPHPExcel->getActiveSheet()->setTitle(mb_convert_encoding($sheet,

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值