java 文件下载 jsp_浏览器打开页面实现文件下载的程序代码(php/jsp/java)

浏览器打开页面实现文件下载的程序代码(php/jsp/java) 有需要学习的同学可参考一下。

tomcat中配置如下:

 代码如下复制代码

txt

application/octet-stream

jpg

application/octet-stream

对于如上配置,当访问扩展名txt或jpg的资源时就出现下载提示框,如果只需要对某些提到的资源让其出现下载提示框,上述配置就不行了,解决的方法是在资源的response头中设置content-type即可,例如:

php 中

 代码如下复制代码

header("Content-type:application/octet-stream");

header('Content-Disposition: attachment; filename="downloaded.txt"');

下载文件程序

 代码如下复制代码

header("content-type:text/html; charset=utf-8");

$file_name=$_GET['name']; //服务器的真实文件名

$file_realName=urldecode($_GET['real']); //数据库的文件名urlencode编码过的

$file_dir="upload/";

$file = fopen($file_dir . $file_name,"r"); // 打开文件

// 输入文件标签

header( "Pragma: public" );

header( "Expires: 0" );

Header("Content-type: application/octet-stream");

Header("Accept-Ranges: bytes");

Header("Accept-Length: ".filesize($file_dir . $file_name));

Header("Content-Disposition: attachment; filename=" . iconv("UTF-8","GB2312//TRANSLIT",$file_realName));

// 输出文件内容

echo fread($file,filesize($file_dir . $file_name));

fclose($file);

exit;

?>

java 中

 代码如下复制代码
response.setContentType("application/octet-stream");

resp.setHeader("Content-Disposition", "attachment;filename="downloaded.txt");

如果需要为下载设置一个保存的名字,可以用Content-Disposition属性来指定。

实例

 代码如下复制代码

response.reset();//可以加也可以不加

response.setContentType("application/x-download");//设置为下载application/x-download

// /../../退WEB-INF/classes两级到应用的根目录下去,注意Tomcat与WebLogic下面这一句得到的路径不同,WebLogic中路径最后没有/

ServletContext context = session.getServletContext();

String realContextPath = context.getRealPath("") "\plan\计划数据模板.xls";

String filenamedisplay = "计划数据模板.xls";

filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");

response.addHeader("Content-Disposition","attachment;filename=" filenamedisplay);

OutputStream output = null;

FileInputStream fis = null;

try

{

output  = response.getOutputStream();

fis = new FileInputStream(realContextPath);

byte[] b = new byte[1024];

int i = 0;

while((i = fis.read(b)) > 0)

{

output.write(b, 0, i);

}

output.flush();

}

catch(Exception e)

{

System.out.println("Error!");

e.printStackTrace();

}

finally

{

if(fis != null)

{

fis.close();

fis = null;

}

if(output != null)

{

output.close();

output = null;

}

}

%>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值