`

Servlet实现文件上传下载

阅读更多
① 客户端必须以二进制形式提交数据
a) 在form表单中添加enctype=“multipart/from-data“
b) ②当在表单中添加enctype,request中提交的数据形式就发生了改变,我们就不能以request.getParameter这种方式接受数据了,我们需要对request中接受的数据进行处理后才能接受
接受客户端提交的文件的方式有两种:
① fileupload上传:依赖于commons包中的jar文件
a) 将四个jar文件导入工程文件中
//在Servlet接受页面提交的数据
//通过传统的request接受方式,我们只能够接收到客户端提交的文本信息
//如果客户端想服务器端提交一个文件,服务器端则无法接受提交的文件
// String file=req.getParameter("myFile");
// String des=req.getParameter("des");
// System.out.println(file+"<><><>\n"+"<><><>"+des);
try {
//创建一个临时指定临时文件夹存放
DiskFileItemFactory temp=new DiskFileItemFactory(1000,new File("D:/file"));
//创建上传工具--接受客户端上传的文件
ServletFileUpload sfu=new ServletFileUpload(temp);
//通过上传工具对request中的数据进行处理
//因为用户提交的所有数据都是通过request提交,那么我们可以通过上传工具取到request中的所有数据,存放到一个集合中
List list=sfu.parseRequest(request);
//遍历集合,取到集合中文件或者字段
Iterator it= list.iterator();
while (it.hasNext()) {
FileItem fi = (FileItem) it.next();
//判断每一个条目是文件还是字段
if(fi.isFormField()){
//如果是一个字段,则取到字段名和字段值
String fileName=fi.getFieldName();
String fileValue=fi.getString("GBK");
System.out.println(fileName+"<><><><"+fileValue);
}else{
//如果不是字段,则表示fi是一个文件,我们需要获取文件的名字,然后把文件保存到指定的目录
String path=fi.getName();
String fileName=path.substring(path.lastIndexOf("\\")+1);
String savePath=getServletContext().getRealPath("/file/")+"/"+fileName;
fi.write(new File(savePath));
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
② SmartUpload上传:依赖于一个第三方架包SmartUpload.jar包
//创建解析工具
SmartUpload su = new SmartUpload();
//通过工具对request中的数据进行初始化
su.initialize(getServletConfig(), request, response);
//设置上传文件是限制信息:设置允许上传的单个文件的最大值,设置允许上传文件的类型
su.setMaxFileSize(1024*1024*10);
su.setAllowedFilesList("jpg,jpeg,bmp,gif,png");
//开始接收客户端的上传
su.upload();
//取到上传的所有文件(files相当于一个集合)
Files fs = su.getFiles();
//取到fs中文件的个数
for (int i = 0; i < fs.getCount(); i++) {
File f = fs.getFile(i);
String fName = f.getFileName();
//取到服务器上的files文件夹的路径
String savePath = getServletContext().getRealPath("/file")+"/"+fName;
f.saveAs(savePath);
}
//从su不能够直接取到字段,但是我们可以取到一个经过处理了的request对象
Request req = su.getRequest();
String des = req.getParameter("des");
System.out.println(des);

//上传成功之后跳转到列表页面,在列表页面中显示files文件夹中的所有文件
String path = getServletContext().getRealPath("/file");
java.io.File dir = new java.io.File(path);
String[] names = dir.list();
List<String> fileNames = new ArrayList<String>();
for (int i = 0; i < names.length; i++) {
fileNames.add(names[i]);
}

request.setAttribute("ns", fileNames);
request.getRequestDispatcher("list.jsp").forward(request, response);
文件下载:
//接受客户端需要下载的文件的文件名
String name=request.getParameter("fname");
String path=getServletContext().getRealPath("/file")+"/"+name;
InputStream is=new FileInputStream(path);
OutputStream os=response.getOutputStream();
response.setContentType("application/exe.pdf");
response.addHeader("Content-Disposition", "attachment;filename="+name);
byte[] b=new byte[500];
int len=-1;
while((len=is.read(b))!=-1){
os.write(b, 0, len);
os.flush();
}
os.close();
分享到:
评论

相关推荐

    jsp+servlet实现文件上传下载

    ### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...

    servlet实现文件上传下载

    本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,其中涉及到的主要技术点包括Servlet API、Multipart解析以及文件流操作。 首先,我们需要了解Servlet在文件上传中的作用。Servlet在接收到客户端(通常...

    servlet 文件上传下载例子

    在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...

    JSP+Servlet实现文件上传到服务器功能

    本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao、service、servlet 这三层是主要的结构,类似 MVC ...

    Servlet实现文件上传与下载

    ### Servlet实现文件上传与下载 #### 一、概述 在Web开发中,文件的上传与下载是一项非常常见的功能需求。本文将详细介绍如何使用Java Servlet技术实现文件的上传和下载功能。我们将通过一个简单的示例来展示整个...

    JSP/servlet实现上传下载

    以上就是使用JSP和Servlet实现文件上传下载的基本流程和关键代码。在实际应用中,我们还需要考虑错误处理、安全性(如防止文件覆盖、上传恶意文件等)以及性能优化(如使用缓冲、断点续传等)。在大型项目中,可能还...

    CKEditor 上传文件(Servlet实现)

    通过以上步骤,你可以成功地在CKEditor 3.6.0中集成Servlet实现的文件上传功能。这个过程不仅适用于图片,还可以扩展到其他类型的文件,如文档、音频和视频。注意在实际应用中,根据服务器环境和项目需求进行相应的...

    java servlet实现图片上传下载

    总结起来,"Java Servlet实现图片上传下载"涉及到的主要知识点有:Servlet生命周期、HTTP协议、文件I/O、数据库操作、表单提交处理、文件存储策略、安全控制、响应头设置以及异常处理。掌握这些技能,开发者可以构建...

    servlet实现文件上传功能

    在本篇讨论中,我们将深入探讨如何利用Servlet实现文件上传功能,以及在这个过程中涉及的关键知识点。 首先,我们需要了解HTTP协议。HTTP协议是无状态的,这意味着每次请求都是独立的。因此,在客户端(通常是...

    jsp,servlet上传下载文件

    文件上传下载是 Web 应用中的一种常见需求,使用 jsp 页面和 servlet 实现文件上传下载是其中的一种解决方案。下面将详细介绍 jsp、servlet 文件上传下载技术。 文件上传下载原理 文件上传下载的原理是将客户端的...

    servlet实现上传下载 java源码

    在这个场景中,我们关注的是如何使用Servlet来实现文件的上传和下载功能,同时结合Tomcat服务器和XML文件进行数据存储。以下是关于这些知识点的详细说明: 1. **Servlet**: Servlet是Java EE规范的一部分,它是一...

    使用Servlet实现文件的上传与下载

    本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,这对于任何Web应用程序来说都是至关重要的。 首先,我们来了解一下Servlet的基本概念。Servlet是Java编程语言中一个用于扩展服务器功能的接口,主要应用...

    JSP+Servlet文件上传下载实例

    在Java Web开发中,JSP(Java...总的来说,JSP+Servlet实现文件上传下载涉及到HTML表单、Servlet请求处理、文件I/O以及第三方库的使用。通过这个实例,开发者可以掌握在Java Web环境中处理文件上传下载的基本流程。

    jsp+servlet实现文件上传和下载

    在这个主题中,“jsp+servlet实现文件上传和下载”是核心知识点,我们将深入探讨如何利用这两个组件以及Apache的`commons-fileupload`和`commons-io`库来完成这一任务。 1. **文件上传** 文件上传通常涉及用户通过...

    【Demo Project】ajaxSubmit+Servlet表单文件上传和下载

    【AjaxSubmit+Servlet实现表单文件上传与下载详解】 在Web开发中,文件上传和下载是常见的功能,尤其是在用户交互丰富的应用中。本项目【Demo Project】利用AjaxSubmit结合Servlet技术,提供了一种高效、异步的方式...

    servlet实现的上传文件实例

    在这个"Servlet实现的上传文件实例"中,我们将深入探讨如何使用Servlet来处理客户端上传的文件。上传文件是Web应用程序中常见的功能,例如用户提交简历、上传图片或者共享文档等。以下是关于这个主题的详细知识点: ...

    Servlet中文件上传和下载

    本文将深入探讨如何在Servlet中实现文件的上传和下载功能,以及在页面上利用JSP和Javabean来实例化对象。 首先,文件上传是通过HTTP多部分请求(Multipart Request)来实现的。Servlet 3.0及以上版本提供了对这种...

    java servlet实现上传/下载文件

    servlet实现上传文件和下载文件的方法,在浏览器中输入http://ip:port/servletName?path这种方式将客户端文件上传至服务器端,简单的例子,servletName参照web.xml path参照servlet中写的参数

Global site tag (gtag.js) - Google Analytics