`

java实现文件的下载

 
阅读更多
文件的下载:

获取指定目录下的所有文件的名字

FileNameServlet.java文件的内容:

package com.test.servlet;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FileNameServlet extends HttpServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		doPost(request,response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		List<String> fileList = getFileName("F:\\学习笔记");//指定文件存放位置
		request.setAttribute("lists", fileList);//设置到request中
		request.getRequestDispatcher("list.jsp").forward(request, response);//将请求转发
	}
	/**
	 * 列出path路径下可以下载的文件名
	 * @param path
	 * @return
	 */
	public static List<String> getFileName(String path){
		List<String> fileNames =new ArrayList<String>();
		File source = new File(path);
		if(source.isDirectory()&&source.exists()){//判断是否存在以及是否是一个目录
			File[] files = source.listFiles();
			for(File file:files){
				fileNames.add(file.getName());//获得文件目录
			}
		}
		return fileNames;
	}
}



DownloadServlet.java内容如下:

package com.test.servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DownloadServlet extends HttpServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		doPost(request, response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String serverPath = "F:\\学习笔记";
		//String fileName = request.getParameter("filename");
		String fileName = new String(request.getParameter("filename").getBytes("ISO-8859-1"), "utf-8");//get提交的方式去乱码
		String fullPath = serverPath + "\\" + fileName;
		System.out.println(fullPath);
		File file = new File(fullPath);
		//设置相应头,
		//attachment是以附件的方式下载,并且文件名为filename后面的字符串的值
		response.setHeader("content-disposition", "attachment;filename="+ new String(fileName.getBytes("utf-8"), "ISO-8859-1"));
		InputStream in = null;
		OutputStream output = null;
		try {
			in = new FileInputStream(file);
			int length = 0;
			byte buffer[] = new byte[1024];
			output = response.getOutputStream();
			while ((length = in.read(buffer)) != -1) {// 如果使用in.read()方法,仅仅可以下载到文件,而不能得到文件的内容
				output.write(buffer, 0, length);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			in.close();
			output.close();
		}
	}

}



list.jsp文件的内容如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<body>
  	<%
  		List<String> fileNames =(List<String>) request.getAttribute("lists");
  		for(String name:fileNames){
  	%>
  	<a href="downloadServlet?filename=<%=name %>"><%=name%></a><br/>
  	<%
  	}
  	%>
  </body>


web.xml文件的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<servlet>
		<servlet-name>fileNameServlet</servlet-name>
		<servlet-class>com.test.servlet.FileNameServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>fileNameServlet</servlet-name>
		<url-pattern>/fileNameServlet</url-pattern>
	</servlet-mapping>
	<servlet>
		<servlet-name>downloadServlet</servlet-name>
		<servlet-class>com.test.servlet.DownloadServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>downloadServlet</servlet-name>
		<url-pattern>/downloadServlet</url-pattern>
	</servlet-mapping>
</web-app>



当在浏览器地址栏中输入:http://localhost:8080/fileDownLoad/fileNameServlet
界面如下:



当点击其中一个连接下载时就会下载该文件
  • 大小: 172.3 KB
分享到:
评论

相关推荐

    Java实现文件下载功能

    ### Java实现文件下载功能 在IT领域,尤其是Web开发中,文件下载是常见的需求之一,例如用户可能需要从服务器下载各种类型的文件,如文档、图片、压缩包等。本文将详细解析如何使用Java来实现这一功能,特别是针对...

    java实现文件下载,并弹出保存对话框(Excel)

    本文将深入探讨如何使用Java实现文件下载,并在客户端弹出保存对话框,特别聚焦于Excel文件的处理,这在企业级应用中尤为常见。 ### Java实现文件下载的关键步骤 1. **设置HTTP响应头**:为了触发浏览器的下载行为...

    ajax实现java文件下载

    在现代Web应用中,用户对交互性和...总结起来,Ajax实现Java文件下载是一种提高用户体验的有效手段,通过前后端的协同工作,实现了无刷新的文件下载功能。理解并掌握这一技术,对于提升Web应用的交互性具有重要意义。

    java使用itext实现pdf文件下载

    现在,我们转向主题,即如何在Java中实现PDF文件的下载。有两种主要的方式: 1. **通过系统路径下载**:这种方式适用于后台生成PDF后,直接保存到服务器的某个路径,然后提供URL给用户下载。以下是一个简单的示例:...

    java利用oss实现下载功能

    "java利用oss实现下载功能" Java是当前最流行的编程语言之一,而 OSS(Object Storage Service)是阿里云提供的一种对象存储服务,通过使用Java和OSS可以实现下载功能。本文将详细介绍如何使用Java和OSS实现下载...

    java实现模板下载功能

    ### Java 实现模板下载功能详解 #### 一、概述 在Web应用开发中,模板下载功能是常见需求之一,尤其在报表系统、数据导出等场景下应用广泛。本篇文章将详细阐述如何利用Java技术栈实现一个简单的模板下载功能。 #...

    Java实现批量下载

    Java实现批量下载 Java中的批量下载是指通过Java程序实现多个文件的压缩和下载,今天我们将讨论如何使用Java实现批量下载,并将其压缩为zip包。 标题解释 标题“Java实现批量下载”表明了本节的主题,即使用Java...

    java 实现 word 文档的在线预览

    这项功能可以让用户无需下载原始文件就能查看文档内容,提高工作效率并减少服务器存储压力。本资源提供的代码和jar包正是为了解决这一问题。 首先,我们要理解Java实现Word在线预览的基本原理。这通常涉及到将Word...

    java代码实现文件上传和下载

    在java代码中实现文件的上传和下载,通过页面的file文件上传到java代码段,获取文件的大小和名字

    扫描二维码下载 JAVA实现20190403

    本文将深入探讨如何使用JAVA实现扫描二维码自动下载对应客户端类型的APP功能。 首先,我们需要理解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,存储的数据可以是网址、文字、图片、联系人...

    JAVA实现的BT下载客户端

    本人用JAVA写的一个BT下载客户端 是本人的毕业设计 界面用SWT实现 后台引用了国外著名的Vuze开源软件的后台 能实现下载上传,种子的解析和生成 软件的功能不是很全 但是本人一手摸索着写成的东西 费了不少心思 是...

    java实现pdf上传,下载,在线预览,删除,修改等功能

    这里我们将深入探讨这些功能的实现,并结合标签`java xpdf java实现pdf`来讨论XPDF库在Java中的应用。 1. **PDF上传**: PDF上传通常涉及用户通过Web界面或API接口提交PDF文件。Java中,可以使用Apache Commons ...

    java图形化实现文件上传_javagui上传文件,gui编写上传下载文件功能-Java文档类资源

    利用java图形化界面和网络编程相结合实现的--文件上传。 运行步骤: (1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 ...

    java实现简单的ftp文件下载

    在`easyfile`这个压缩包文件中,可能包含了一个简单的Java实现,展示了如何进行上述步骤。通过阅读和理解代码,你可以更深入地了解FTP文件下载的实现细节。记住,实践是学习的最佳途径,尝试自己动手编写代码并运行...

    java实现cos上传与下载

    Java实现COS(Cloud Object Storage)上传与下载是云计算服务中的常见操作,主要涉及对象存储的概念、Java SDK的使用以及文件I/O操作。COS通常由云服务提供商提供,用于存储大量的非结构化数据,如图片、视频、文档...

    Java实现FTP批量大文件上传下载.pdf

    Java实现FTP批量大文件上传下载 一、Java FTP客户端库的选择 在选择Java FTP客户端库时,需要考虑多个因素,例如性能、安全性、可靠性等。当前有多种FTP客户端库可供选择,例如J-FTP、SimpleFTP、FTPClient等。每...

    Java 利用多线程实现文件的分片下载

    大文件的快速下载,经测试在100M带宽的网络下,下载一个40M的文件,不超过两秒钟,当然还得根据自己电脑的配置来讲。 其他说明: 文件如果特别小,而自己网络又非常好的情况下,不建议使用线程池进行下载,因为...

    Java 实现的断点下载

    Java 断点下载技术是Java编程中用于网络文件下载的一种高效方法,特别是在处理大文件时,它允许用户中断和恢复下载过程。断点下载的基本原理是通过保存已下载部分的信息,如下载的总长度、已下载的字节数以及当前...

    用JAVA实现远程图片批量下载

    ### 使用JAVA实现远程图片批量下载的关键技术点 #### 一、引言 随着互联网的快速发展,用户对于网络资源的需求越来越多样化。其中,批量下载图片的需求尤为显著,尤其是在处理网络相册、电子书籍等内容时。传统的...

    迅雷下载接口java实现

    本话题将深入探讨如何使用Java实现迅雷下载接口,这是一项利用迅雷的动态链接库(DLL)和C++开放接口来提升下载效率和稳定性的技术实践。 首先,我们需要了解迅雷的C++开放接口。迅雷为了方便开发者集成其下载功能...

Global site tag (gtag.js) - Google Analytics