Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Andriod文件下載含服務器端(服務器端)

Andriod文件下載含服務器端(服務器端)

編輯:關於Android編程

本文繼續講解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方法。

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved