MyEclipse------从服务器下载文件
Downfile.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<%@page import="java.io.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'Downfile.jsp' starting page</title>
<style type="text/css">
a:hover{color:red;}
</style>
</head> <body>
<center>
<font color="#00008b" size="5" >文件下载站</font><br><br>
<table>
<%
path=request.getRealPath("");
File file=new File(path,"\\myfile");
String str[]=file.list();
for(int i=0;i<str.length;i++){
String s=str[i];
out.print("<tr><td>"+s+"</td><td><a href='file/Downfile1.jsp?name="+s+"'>下载</a></td></tr>");
}
%>
</table>
</center>
</body>
</html>
Downfile1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<%@page import="java.io.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'Downfile1.jsp' starting page</title>
</head> <body>
<%
response.reset();
try {
String str = request.getParameter("name");
//第一个参数为要解码的字节字符,第二个参数为解码方法
//getBytes()里面的参数为str原来的编码方式
str = new String(str.getBytes("UTF-8"), "UTF-8"); path = request.getRealPath("");
out.print(path);
path = path.substring(0, path.lastIndexOf("\\"));
out.print(path);
path = path + "\\myfile\\"; //第一个参数为路径,第二个参数文件名
File fileLoad = new File(path, str);
response.reset(); OutputStream o = response.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(o); //输出文件用的字节数组,每次发送500个字节到输出流
byte b[] = new byte[500]; //客户端使用保存文件的对话框
response.setHeader(
"Content-disposition",
"attachment;filename="
+ new String(str.getBytes("UTF-8"), "UTF-8"));
//通知客户文件的MIMIE类型
response.setContentType("application/x-tar");
long fileLength = fileLoad.length();
String length = String.valueOf(fileLength);
response.setHeader("Content_length", length);
FileInputStream in = new FileInputStream(fileLoad);
int n = 0;
while ((n = in.read(b)) != -1) {
bos.write(b, 0, n);
}
bos.close();
//java.lang.IllegalStateException: getOutputStream() has already been called for this response
//加入下面两句不会抛出异常,取消response.reset(),否则会抛出
//java.lang.IllegalStateException: Cannot call reset() after response has been committed
out.clear();
out=pageContext.pushBody();
} catch (Exception e) {
System.out.print(e);
}
//response.reset();
%>
</body>
</html>
MyEclipse------从服务器下载文件的更多相关文章
- 【FTP】C# System.Net.FtpClient库连接ftp服务器(下载文件)
		
如果自己单枪匹马写一个连接ftp服务器代码那是相当恐怖的(socket通信),有一个评价较高的dll库可以供我们使用. 那就是System.Net.FtpClient,链接地址:https://net ...
 - (4)FTP服务器下载文件
		
上一篇中,我们提到了怎么从FTP服务器下载文件.现在来具体讲述一下. 首先是路径配置.. 所以此处我们需要一个app.config来设置路径. <?xml version="1.0&q ...
 - Python 实现批量从不同的Linux服务器下载文件
		
基于Python实现批量从不同的Linux服务器下载文件 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用方法 1 1. 编辑配置文件conf/file_for_downl ...
 - 从Linux服务器下载文件到本地命令
		
从Linux服务器下载文件夹到本地1.使用scp命令 scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件 ...
 - 从Linux服务器下载文件夹到本地
		
从Linux服务器下载文件夹到本地 1.使用scp命令 scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文 ...
 - Java Web实现使用浏览器从服务器下载文件(后台)
		
Java Web实现 使用浏览器从服务器下载文件. 下面实现两种情况的下载,需求如下: 需求(一):1.用户在页面填写表单. 2.填写完成后,选择下载,将表单内容发往后台. 3.后台根据内容生产一个文 ...
 - Java 从服务器下载文件到本地(页面、后台、配置都有)
		
先来看实现效果: 有一个链接如下: 点击链接下载文件: 第一种方法:Servlet实现 一.HTML页面部分: 1.HTML页面中的一个链接 <a id="downloadTempl ...
 - js从服务器下载文件
		
通常,将文件绝对路径url作为超链接<a>的链接地址href的值,点击<a>后,浏览器将会尝试请求文件资源,如果浏览器能够辨认文件类型,则将会以预设的打开方式直接打开下载的文件 ...
 - C#从服务器下载文件到客户端源码
		
1.在window窗体加个button控件,双击进去
 - C# 从服务器下载文件代码的几种方法
		
一.//TransmitFile实现下载 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一 ...
 
随机推荐
- Css 特殊或不常用属性
			
1. -webkit-font-smoothing: antialiased; CSS3中用于webkit引擎(如chrome)中设置字体的抗锯齿或者说光滑度的属性.有3个属性:none用于小像素的文 ...
 - [转]在Ubuntu 下安装Redis 并使用init 脚本启动
			
1. 下载安装: cd /tmp wget http://redis.googlecode.com/files/redis-2.2.4.tar.gz tar -zxf redis-2.2.4.ta ...
 - crontab任务取消发送邮件
			
1. 方式一,每一个计划任务后加上 >/dev/null 2>&1 */5 * * * * sh /web/adm/Shell/checkin_user_count_everyda ...
 - 在ASP.Net和IIS中删除不必要的HTTP响应头
			
引入 每次当浏览器向Web服务器发起一个请求的时,都会伴随着一些HTTP头的发送.而这些HTTP头是用于给Web服务器提供一些额外信息以便于处理请求.比如说吧.如果浏览器支持压缩功能,则浏览器会发送A ...
 - Arduino小车学习与研究博客
			
Arduino小车学习与研究博客 信安系统设计基础实践模块 Arduino小车学习与研究 ================== 陈都(20135328) 余佳源(20135321) 莫凡(201352 ...
 - ios UILocalNotification的使用
			
iOS下的Notification的使用 Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iO ...
 - MVC5 + EF6 + Bootstrap3 (13) 查看详情、编辑数据、删除数据
			
Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-rud.html 系列教程:MVC5 + EF6 + Boo ...
 - AutoTest简介
			
前言(仅看介绍本身的可以略过) 在离职后的一段时间里,个人总结了过去几年工作的心得,结合以往的工作经验.重新思考并重构了前些年做的一些东西(主要是测试相关),产生了设计AutoTest这样的一个测试工 ...
 - 细说 Web API参数绑定和模型绑定
			
今天跟大家分享下在Asp.NET Web API中Controller是如何解析从客户端传递过来的数据,然后赋值给Controller的参数的,也就是参数绑定和模型绑定. Web API参数绑定就是简 ...
 - ubuntu中管理用户和用户组
			
1. 添加一个用户组并指定id为1002 sudo groupadd -g 1002 www 2. 添加一个用户到www组并指定id为1003 sudo useradd wyx -g 1002 -u ...