Andriod文件下载含服务器端(服务器端)一

本文继续讲解andriod网络方面问题。本文主要在Eclipse上搭建服务器端。

同上篇,本文tomcat版本7.0,servlet 3.0不需要在web.xml下注册xml文件。

本文实现的内容较简单,在服务器在磁盘上读取一个pdf(其他文件也行),返回一个流文件给客户端。

服务器端的代码如下:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//String pathString="F:\\作业\\基于ARM11的嵌入式系统开发方法.docx";
		//要下载的文件路径,本文为绝对路径
		String pathString="D:\\我的文档\\桌面\\新建文件夹 (3)\\新概念3\\旧版新概念英语第三册课文.pdf";

		InputStream inputStream=null;
		OutputStream outputStream=null;
		File file=new File(pathString);
		inputStream=new BufferedInputStream(new FileInputStream(file));

		//设置为流下载
		response.setContentType("application/octet-sream");
		//设置响应大小
		response.setContentLength((int) file.length());

		response.setHeader("Content-type", "text/html;charset=UTF-8");
		//这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859
		response.setCharacterEncoding("UTF-8");  

		String fileName=file.getName();
		//浏览器下载
		response.addHeader("Content-Disposition", "attachment;filename="+ new String( fileName.getBytes("gb2312"), "ISO8859-1" ));

		outputStream=new BufferedOutputStream(response.getOutputStream());

		// 缓冲区大小1024
		byte[] s=new byte[10240];
		int len=0;
		//避免最后一次读取数据时,不满10240b的数据被填充,造成数据不准确性
		while((len=inputStream.read(s))!=-1)
		{
			outputStream.write(s, 0, len);

		}
		if (inputStream!=null) {
			inputStream.close();
		}
		response.flushBuffer();
		if (outputStream!=null) {
			outputStream.close();
		}
	}

doget调用dopost方法。

为便于测试,添加了浏览器下载部分代码:

response.addHeader("Content-Disposition", "attachment;filename="+ new String( fileName.getBytes("gb2312"), "ISO8859-1" ));

直接在浏览器中输入  Ip地址:8080/Myweb/downlod.do

其中Myweb/downlod.do为本文servlet的映射地址, Ip地址:8080为tomcat地址,Myweb仍让为上次的项目文件

即可下载该文件。

时间: 2024-11-09 10:21:50

Andriod文件下载含服务器端(服务器端)一的相关文章

Andriod文件下载含服务器端(工具包 Httputils)二

同样在上一篇服务器的基础上,本文客户端也在登录界面 Andriod简单http get请求基础上,用户注册后跳转到下载界面,本文下载界面只有两个View,一个是textView显示注册后用户名(本文未做登录界面,方法与注册类似,只是在服务器端查询数据库中用户名,密码是否正确).另一个为下载按钮,点击后下载到sd卡中. 下面先将工具包,该类封装了Http请求,本文使用get方法,使用HttpURLConnection类来负责具体请求. httpUtils类中添加sendDownloadPost方法

Andriod文件下载含服务器端(客户端 UI界面异步请求部分)三

本文采用AsyncTask来实现异步请求,具体代码如下: public class downloadActivity extends Activity { private TextView myTextView=null; private Button button=null; private static final String path="http://192.168.0.179:8080/Myweb/download.do"; private ProgressDialog pr

linux 下载并安装Memcache服务器端

1.下载并安装Memcache服务器端 服务器端主要是安装memcache服务器端. 下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz 另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.3.(如果你的系统已经安装了libevent,可以不用安装) 官网:http://www.monkey.org/~provos/lib

Eclipse远程调试(远程服务器端监听)

前提:远程服务器上运行的WEB项目class对应的源码与本地项目中必须保持一致,也就是远程tomcat部署的项目就是本机项目打包过去的,而本机项目没有发生变动. 远程服务器端 服务器端配置eclipse调试器监听端口,有两种方式,任选其一 第一种方式: 环境变量 export JPDA_ADDRESS=9999 启动tomcat 使用sh catalina.sh jpda start启动 注意:不要用startup.sh 通过这条命令启动tomcat,会监听JPDA_ADDRESS设置的端口,等

IOS Socket 04-利用框架CocoaAsyncSocket实现客户端/服务器端

这篇文章,我们介绍CocoaAsyncSocket框架的使用,主要介绍实现客户端/服务器端代码,相信在网上已经很多这样的文章了,这里做一下自己的总结.这里介绍使用GCD方式 一.客户端 1.下载地址 读者可以在github下载框架源码 https://github.com/robbiehanson/CocoaAsyncSocket 下载后,可以看到在Examples下面可以看到很多例子,如果读者自学能力高,可以略过下面的文章. 2.开始使用 1)在 \Source\GCD 目录下,我们可以看到G

Javaweb学习笔记10—文件上传与下载

 今天来讲javaweb的第10阶段学习.文件的上传与下载,今天主要说的是这个功能的实现,不用说了,听名字就是外行人也知道肯定很重要啦. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多 一*, 文件的上传:      1 *分析实现步骤: 1.1* 客户端浏览器通过文件域选择本地要上传的文件. * 点击"上传"按钮

Linux网络编程6——使用TCP实现文件服务器

需求 当客户端连接上服务器后,服务器会将相应文件传输给客户端,实现文件下载. 思路 服务器端,主进程负责listen.循环内,主进程每从任务请求队列中accept出一个请求,就fork出孙子完成文件传输.注意:如果只是fork出儿子,那么主进程就得wait儿子,这样的话,只有当给一个客户端传完文件后才能下一个. 代码 server端 /************************************************************************* > File

JAVA 基础 HTTP的介绍

目录 http的方法 http请求头Content-Type编码指定 form表单 httpClient的使用(图片来自于网络) http的方法 OPTIOINS  返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送"*"请求测试服务器的功能性 HEAD 向服务器索与GET请求相一致的响应,只不过响应体将不会被返回,这一方法可以在不必传输整个响应内容的情况下,就可以获取包含响应消息头中的元信息 GET     向特定的资源发出请求,它本质就是发送一个请求来取得

Cookie和Session

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session. Cookie机制 Cookie技术是客户端的解决方案,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向