java的jsp要下载吗_jsp、java下载附件

1 传入此jsp中的参数均已URLDencoder过。2

3

4

5

6

7 boolean isError = false;8 String errorMsg = "";9 response.reset();//可以加也可以不加

10 request.setCharacterEncoding("UTF-8");11 String folder = "news";12 if(request.getParameter("folder")!=null){13 folder = "upload/"+(String)request.getParameter("folder");14 }15 String newname = request.getParameter("newname");16 //是否允许直接在浏览器内打开

17 boolean isInline = false;18 out.clear();19 response.reset();20 String filePath = request.getRealPath("/"+folder)+"/" +newname;21 java.io.BufferedOutputStream output = null;22 java.io.BufferedInputStream input = null;23 try{24 java.io.File f = newjava.io.File(filePath);25 if(f.exists() &&f.canRead()){26 String mimetype = null;27 mimetype =application.getMimeType( filePath );28 if(mimetype==null){29 mimetype = "application/octet-stream;charset=utf-8";30 }31 response.setContentType(mimetype);32 //IE 的话就只能用 IE 才认识的头才能下载 HTML 文件, 否则 IE 必定要打开此文件!

33 String ua = request.getHeader("User-Agent"); //获取终端类型

34 if(ua==null ){ua = "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;)";}35 boolean isIE = ua.toLowerCase().indexOf("msie")!=- 1; //是否为 IE

36 if (isIE && !isInline) {37 mimetype = "application/x-msdownload";38 }39 response.setContentType(mimetype);40 //是否内联附件

41 String inlineType = isInline?"inline":"attachment";42 response.setHeader("Content-Disposition" , inlineType + ";filename=" +filename);43 //设置下载内容大小

44 response.setContentLength((int)f.length());45 //缓冲区

46 byte[] buffer = new byte[ 4096];47 output = newjava.io.BufferedOutputStream(response.getOutputStream());48 input = new java.io.BufferedInputStream(newjava.io.FileInputStream(f));49 int n = (-1);50 while((n=input.read(buffer,0,4096))>-1){51 output.write(buffer,0,n);52 }53 response.flushBuffer();54

55 }else{56 isError = true;57 errorMsg = "文件不存在!";58 }59 } catch(Exception ex) {60 isError = true;61 errorMsg = "您下载的文件出现异常!";62 } finally{63 if(isError){64 String path = request.getHeader("Referer");65 errorMsg=new String(errorMsg.getBytes("GBK"), "ISO8859_1");66 %>

67

68 alert('');69 window.location.href='';70

71

72 }73 if(input!=null){input.close();}74 if(output!=null){output.close();}75 out.clear();76 out =pageContext.pushBody();77 }78 %>

备注:

public void downBatchRateModelFile(String fileName,String downName, HttpServletResponse response,HttpServletRequest request) {

try {

String downPath = TemplateBuilder.getInstance().getBatchRateModelFold()+File.separator+fileName;

// path是指欲下载的文件的路径。

File file = new File(downPath);

// 取得文件名。

String filename = file.getName();

// 取得文件的后缀名。

String ext = filename.substring(filename.lastIndexOf(".") )

.toLowerCase();

filename = downName+ext;

// 以流的形式下载文件。

InputStream fis = new BufferedInputStream(new FileInputStream(downPath));

byte[] buffer = new byte[fis.available()];

fis.read(buffer);

fis.close();

// 清空response

response.reset();

// 设置response的Header

response.addHeader("Content-Length", "" + file.length());

String mimetype = "application/octet-stream;charset=utf-8";

String ua = request.getHeader("User-Agent"); // 获取终端类型

if (ua == null) {

ua = "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;)";

}

boolean isIE = ua.toLowerCase().indexOf("msie") != -1; // 是否为 IE

if (isIE) {

mimetype = "application/x-msdownload";

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

+ java.net.URLEncoder.encode(filename, "UTF-8"));

}else{

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

+ new String(filename.getBytes("GBK"),"ISO-8859-1"));

}

response.setContentType(mimetype);

//response.setContentType("application/x-msdownload");

OutputStream toClient = new BufferedOutputStream(

response.getOutputStream());

//response.setContentType("application/octet-stream");

toClient.write(buffer);

toClient.flush();

toClient.close();

} catch (IOException e) {

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈高斯消元的实现和简单应用

一、高斯消元的原理 对于n元的m个线性方程组成的方程组,我们将其以矩阵的形式记录下来: a11 a12 a13 ...... a1n b1 a21 a22 a23 ...... a2n b2 ... ... ... an1 an2 an3 ...... ann bn 然后进行初等行列变换,尝试构造出一个上三角矩阵&#…

java知识体系 servlet_03-Servlet 体系结构知识梳理

一、Servlet体系结构Java Web应用是基于Servlet规范运行,Servlet顶层类的关联如下图:从图可看出,Servlet规范基本围绕这几个类运行,其中,与Servlet主动关联的有3个类,分别是ServletRequest、ServletRespons…

SQL批量提交修改业务

把你需要批量提交修改的东西在内存中修改完毕 然后执行以下代码 SqlConnection conn new SqlConnection(ConnectionString);SqlDataAdapter sda new SqlDataAdapter("select Id,RankSummary,RankOfCn,Classify from u_College;", conn); //这里的SQL语句可以是查询…

testlink自带java api_java如何连接testlink

1.下载相关的jar包2.获取到testlink的url和key,注意:url不是testlink的连接地址,是连接地址/lib/api/xmlrpc.php3.测试是否连接成功public static void main(String args[]) {String url "http://test.tl.gmsd.lan/lib/api/xmlrpc.php&…

ubuntu解压缩zip/tar/tar.gz/tar.bz2

ubuntu解压缩zip/tar/tar.gz/tar.bz2ZIPzip可能是目前使用得最多的文档压缩格式。它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用。缺点就是支持的压缩率不是很高,而tar.gz和tar.gz2在压缩率方面做得…

lr背景虚化_lr背景虚化_怎样拍出背景模糊的照片

除了锐化之外,要获得独特的,令人难忘的图像,还可以使用其他方法,例如,相反的效果-单个细节的模糊。这样的方法将使人们有可能专注于整个构图的中心人物,为图片增加情感色彩,动作,并为…

MySql Delimiter

Delimiter 重新定义结束符,delimiter 默认情况下是 分号 (;) ,即默认情况下,Mysql解释器,遇到分号,则执行该命令。 但在mysql可视化图形客户端编辑命令时,当编辑的sql语句存在多行命…

在线五子棋JAVA网络编程_实验五 Java网络编程及安全

一、实验内容1.掌握Socket程序的编写;2.掌握密码技术的使用;3.设计安全传输系统。二、实验步骤1. 基于Java Socket实现安全传输2. 基于TCP实现客户端和服务器,结对编程一人负责客户端,一人负责服…

Python学习之==文件操作

1、打开文件的模式 1 r,只读模式(默认)【不可写;文件不存在,会报错】 2 w,只写模式【不可读;不存在则创建;存在则删除内容】 3 a,追加模式【不可读;不存在则创…

java多线程创建runnable_Java线程池和runnables创建runnables

有很多方法可以做你想要的 . 您需要小心,不要最终创建太多线程 .以下是一个示例,您可以使用ExecutorCompletionService提高效率,也可以使用Runnable .import java.util.ArrayList;import java.util.List;import java.util.Random;import java…

CF某gym G

题目大意&#xff1a;给定n个点&#xff0c;求一条直线最多能经过几个点(n<1000) 做法&#xff1a;大暴力。。。枚举每一个点作为直线的端点&#xff0c;然后求出剩下n-1个点和它的斜率&#xff0c;斜率相同的说明可以同时在一条直线上 #include<bits/stdc.h> #define…

java嵌入式开发neo4j_java-嵌入式Neo4j实际如何工作?

我是neo4j的新手,根据我到目前为止所做的阅读,似乎有两种方法可以使用Neo4j REST和Embedded与neo4j进行交互.我有点困惑的是,“嵌入式”选项是否仅使您能够使用本机Neo4j API操纵数据存储,还是可以嵌入Neo4j并将其与Java应用程序打包,如果可以的话,我该怎么做&#xff1f;解决方…

rnn中文语音识别java_语音识别算法阅读之RNN-T-2018

论文&#xff1a;EXPLORING ARCHITECTURES, DATA AND UNITS FOR STREAMING END-TO-END SPEECH RECOGNITION WITH RNN-TRANSDUCER,2018CTC的一个问题在于&#xff0c;其假设当前帧的输出与历史输出之间的条件独立性&#xff1b;RNN-T引入预测网络来弥补CTC这种条件独立性假设带来…

java数字不等于_java – 仅使用set中的数字查找等于或大于给定目标的总和

首先让我们将这个问题简化为整数而不是实数,否则我们将无法获得快速优化算法.例如,让我们将所有数字乘以100,然后将其四舍五入为下一个整数.所以说我们有项目大小x1,…,xn和目标大小Y.我们想要最小化该值k1 x1 … kn xn – Y在这种条件下(1) ki is a non-positive integer fo…

Mybatis 系列2-配置文件

【Mybatis 系列10-结合源码解析mybatis 执行流程】 【Mybatis 系列9-强大的动态sql 语句】 【Mybatis 系列8-结合源码解析select、resultMap的用法】 【Mybatis 系列7-结合源码解析核心CRUD配置及用法】 【Mybatis 系列6-结合源码解析节点配置objectFactory、databaseIdProvid…

python中restful接口开发实例_Python RESTful接口开发02

什么是RESTfulRESTful是一种设计思想&#xff0c;一种风格。RESTful主要包括 资源 和 对资源的操作。资源&#xff1a; 对实体的抽象&#xff0c;图书、音乐、电影、学生等都属于资源。对资源的操作&#xff1a; HTTP 方法 行为 示例 GET 获取资源的信息 http://example.com/…

Storm环境搭建(分布式集群)

作为流计算的开篇&#xff0c;笔者首先给出storm的安装和部署&#xff0c;storm的第二篇&#xff0c;笔者将详细的介绍storm的工作原理。下边直接上干货&#xff0c;跟笔者的步伐一块儿安装storm。 原文链接&#xff1a;Storm环境搭建&#xff08;分布式集群&#xff09; Step1…

php 红包算法,PHP语言:实现微信红包拆分算法

本文主要向大家介绍了PHP语言&#xff1a;实现微信红包拆分算法&#xff0c;通过具体的内容向大家展示&#xff0c;希望对大家学习php语言有所帮助。 修复最后一个红包输出未保留2位数 修复领取的红包金额低于最小红包限制* 红包分配算法** example* $coupon new Coupon(…

java 强制向上转型,Java 转型(向上或向下转型)详解及简单实例

在Java编程中经常碰到类型转换&#xff0c;对象类型转换主要包括向上转型和向下转型。向上转型我们在现实中常常这样说&#xff1a;这个人会唱歌。在这里&#xff0c;我们并不关心这个人是黑人还是白人&#xff0c;是成人还是小孩&#xff0c;也就是说我们更倾向于使用抽象概念…

复习Python DB-API

一、python的DB-API 1.Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同 的方式操作各数据库。 Python DB-API使用流程: 1. 引入API模块。 2. 获取与数据库的连接。 3. 执行SQL语句和存储过程。 4. 关闭数据库连接。 2.Python操作mysql 安装包&am…