package upload_download.servlet;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import upload_download.dao.UploadDownloadDAO;
import upload_download.vo.UploadDownload;
public class UploadDownloadDownServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取id
String id = request.getParameter("id");
UploadDownload uploadDownload = UploadDownloadDAO.findOneById(id);
//UploadDownloadDAO.downloadTimesAdd(id);
this.glsEnclosureDownload(request, response, uploadDownload);
}
/**
* 下载文件。
*/
public void glsEnclosureDownload(HttpServletRequest request,
HttpServletResponse response, UploadDownload uploadDownload)
throws ServletException, IOException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
outputStream.write(uploadDownload.getFile_data());
// 文件名称
String filename = uploadDownload.getFile_name().substring(0,
uploadDownload.getFile_name().lastIndexOf("."));
// 文件类型
String file_type = uploadDownload.getFile_name().substring(
uploadDownload.getFile_name().lastIndexOf("."));
response
.addHeader("Content-Disposition", "attachment; filename="
+ new String(filename.getBytes("gbk"), "iso8859-1")
+ file_type);
// response.setHeader("Content-Disposition", "inline; filename=" + new
// String(rewardPunish.getFile_name().getBytes("gbk"),"iso8859-1"));
response.setContentType("application/octet-stream");
response.setContentLength(outputStream.size());
ServletOutputStream out = response.getOutputStream();
outputStream.writeTo(out);
out.flush();
out.close();
UploadDownloadDAO.downloadTimesAdd(uploadDownload.getId()+"");
}
}
分享到:
相关推荐
本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,这对于任何Web应用程序来说都是至关重要的。 首先,我们来了解一下Servlet的基本概念。Servlet是Java编程语言中一个用于扩展服务器功能的接口,主要应用...
总结一下,这个"Servlet文件下载项目"展示了如何使用Servlet技术实现一个简单的文件下载服务。通过理解Servlet的工作原理、HTTP响应头的设置以及Java I/O流的使用,我们可以构建出更复杂、更安全的文件下载系统。这...
在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...
本示例中,我们将探讨如何使用Java Servlet来实现文件的下载功能。 首先,理解HTTP协议是至关重要的,因为它定义了客户端(浏览器)与服务器之间的通信方式。在文件下载场景中,服务器需要响应一个HTTP请求,该请求...
这个链接会指向一个`servlet`,由`servlet`来处理实际的文件读取和下载逻辑。 1. **创建Servlet**:首先,我们需要创建一个自定义的`servlet`,例如`FileDownloadServlet`。在`src`目录下的Java源代码文件中,我们...
结合JSON(JavaScript Object Notation)和Servlet,我们可以实现一个高效且用户友好的文件下载系统。以下是对这个"ajax+json+servlet下载"主题的详细解释。 首先,我们需要理解Ajax的核心原理。Ajax通过...
在这个场景中,"使用Servlet实现文件的下载"是一个常见的需求,特别是在构建动态网站时,用户可能需要下载服务器上的文件。以下是关于如何使用Servlet实现文件下载的详细步骤和知识点: 1. **创建Servlet**:首先,...
这篇博客"答Servlet下载文件的附件"可能涉及了如何利用Servlet来实现文件的下载功能,让我们深入探讨这个话题。 首先,我们需要了解Servlet生命周期中的service()方法。当一个HTTP请求到达服务器,Servlet容器(如...
### Servlet下载文件知识点详解 #### 一、Servlet简介与应用场景 Servlet是一种运行在服务器端的小程序,主要用于处理HTTP请求并生成动态网页。Servlet是Java Web开发的基础技术之一,广泛应用于构建动态网站和Web...
特别是在企业级应用中,用户经常需要下载诸如报告文档、数据备份等文件。Java Servlet作为一种强大的服务器端技术,可以很好地实现这一功能。本文将详细介绍一个基于Servlet的文件下载代码示例,并对其实现原理进行...
文件上传下载是 Web 应用中的一种常见需求,使用 jsp 页面和 servlet 实现文件上传下载是其中的一种解决方案。下面将详细介绍 jsp、servlet 文件上传下载技术。 文件上传下载原理 文件上传下载的原理是将客户端的...
下面将详细介绍如何使用Servlet实现文件上传和下载的功能。 ### 文件上传 文件上传通常涉及到HTTP协议中的`multipart/form-data`编码类型,这是处理表单数据中包含文件的关键。Servlet 3.0及以上版本提供了更方便...
总结来说,"servlet上传下载文件"是一个使用Java Servlet实现的Web应用程序,允许用户上传文件至服务器,并能够从服务器下载这些文件。这个系统的核心在于Servlet的`doPost`或`doGet`方法,它们处理HTTP请求,读取或...
自己用servlet写的文件上传及下载功能带进度条 主要用到两个jar:commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar 内容介绍: com.fm.FileManagerService:一个servlet用来实现主要的文件上传下载逻辑的 ...
总结来说,实现Servlet文件上传下载需要理解Servlet生命周期、HTTP请求处理、多部分数据解析以及文件I/O操作。Apache Commons FileUpload库简化了这一过程,但理解其背后的原理对于解决可能出现的问题和优化性能至关...
本文将深入探讨如何在Servlet中实现文件的上传和下载功能,以及在页面上利用JSP和Javabean来实例化对象。 首先,文件上传是通过HTTP多部分请求(Multipart Request)来实现的。Servlet 3.0及以上版本提供了对这种...
文档详细介绍了Servlet API的使用,涵盖了从基础概念到高级特性的全方位知识。 首先,Servlet是Java EE(现在称为Jakarta EE)的一部分,它是一个服务器端的Java接口,允许程序员编写能够处理HTTP请求的应用程序。...
"基于Servlet实现文件的上传与下载"是一个常见的实战任务,它涵盖了网络编程、多线程和文件I/O等多个核心概念。这里我们将深入探讨如何利用Servlet来实现这两个功能。 首先,让我们了解Servlet的工作原理。Servlet...
【AjaxSubmit+Servlet实现表单文件上传与下载详解】 在Web开发中,文件上传和下载是常见的功能,尤其是在用户交互丰富的应用中。本项目【Demo Project】利用AjaxSubmit结合Servlet技术,提供了一种高效、异步的方式...
赠送jar包:javax.servlet-api-4.0.0.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。