首先需要两个第三方Jar包
上传与下载文件的Servlet
package com.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.dao.UpFileDAO;
import com.vo.UpFileVo;
public class UpLoadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
// 从硬盘下载文件
// String fileName=request.getParameter("fileName");
//
// String path = super.getServletContext().getRealPath("\\");
//
// File file = new File(path + "upload\\" + fileName);
//
// if(file.exists()){
// 从数据库下载文件
int id = Integer.parseInt(request.getParameter("id"));
UpFileDAO upDao = new UpFileDAO();
UpFileVo upfile = upDao.findFileById(id);// 得到文件
// InputStream input=null;
OutputStream output = null;
try {
// input=new FileInputStream(file);
//
// byte[] size=new byte[input.available()];
//
// input.read(size);
// 设置下载的mime类型
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename="
+ upfile.getFileName());
output = response.getOutputStream();
output.write(upfile.getFilecontent());
output.flush();
} catch (RuntimeException e) {
e.printStackTrace();
} finally {
if (output != null) {
output.close();
}
// if(input!=null){
// input.close();
// }
}
}
// }
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 判断是否有属性mutilpart
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
try {
if (isMultipart) {
// 创建文件列表工厂
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
UpFileDAO upDao = new UpFileDAO();
// 找到文件域
for (FileItem fileItem : items) {
if (!fileItem.isFormField()) {
// 获得文件的一些信息
// System.out.println(fileItem.getFieldName());
// System.out.println(fileItem.getName());
// System.out.println(fileItem.getSize());
// System.out.println(fileItem.get()); // 文件内容
// 获得上传的文件名字
String fileName = fileItem.getName();
fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);// 文件的名字
// 获取上传文件的路径
String path = super.getServletContext().getRealPath("\\");
File file = new File(path + "upload\\" + fileName);
OutputStream output = null;
//
// try {
// output = new FileOutputStream(file);
//
// output.write(fileItem.get());
//
// output.flush();
// output.flush();
// } catch (RuntimeException e) {
// e.printStackTrace();
// } finally {
// if (output != null) {
// output.close();
// }
// }
// 将文件写到数据库中
UpFileVo upfile = new UpFileVo();
upfile.setFileName(fileName);
upfile.setFileSize(fileItem.getSize());
upfile.setFilecontent(fileItem.get());
boolean b = upDao.insertUpFile(upfile);
// 如果数据库添加失败,则将上传得文件删除
if (!b) {
fileItem.delete();
}
} else {
if ("expireTime".equals(fileItem.getFieldName())) {
System.out.println(fileItem.getString());
}
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
response.sendRedirect("UpFileListServlet");
}
}
分享到:
相关推荐
我自己编写的jsp页面利用fileupload组建实现文件上传和下载,简单易懂。仅供初学者参考...
本篇将详细讲解如何使用Commons FileUpload来实现文件上传的功能。 首先,理解HTTP协议中的多部分数据是至关重要的。在HTML表单提交文件时,通常会使用`enctype="multipart/form-data"`属性,此时,数据会被分割成...
通过以上步骤,你可以成功地使用Apache Commons FileUpload实现文件上传和下载功能,并避免中文乱码问题。在实际开发中,还可以结合Spring MVC或Struts等框架,进一步简化代码和提高代码的可维护性。
### Commons-FileUpload 实现文件上传下载 #### 知识点概述 Commons-FileUpload 是 Apache 提供的一个用于处理 HTTP 文件上传的组件。它基于 Servlet 规范,并且能够解析来自 `multipart/form-data` 编码类型的 ...
使用fileupload组件实现文件上传功能 FileUpload组件是Apache提供的一款文件上传组件,能够帮助我们轻松实现文件上传功能。下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两...
首先,我们要知道ASP.NET中的`<asp:FileUpload>`控件是实现文件上传的核心组件。它可以允许用户从本地计算机选择一个或多个文件,并将这些文件上传到服务器。在多文件上传中,我们需要确保控件的`Multiple`属性设置...
Struts1.2和Commons-Fileupload是Java Web开发中用于实现文件上传的两个重要组件。Struts1.2是Apache的一个开源框架,主要用于构建MVC(模型-视图-控制器)架构的Web应用程序,而Commons-Fileupload则是Apache ...
Java 实现的文件上传下载功能是Web开发中的一个重要部分,主要涉及到HTTP协议、Servlet、文件I/O以及数据库操作等技术。在这个"FileUpLoad"项目中,开发者使用了Struts2框架来处理用户请求,Oracle数据库存储文件元...
Java使用Apache Commons FileUpload实现文件上传与下载是一个常见的任务,特别是在开发Web应用程序时。Apache Commons FileUpload是一个专门处理HTTP协议中的多部分/形式数据(multipart/form-data)的库,这通常...
- 要实现文件预览,我们需要在客户端JavaScript中处理,因为FileUpload控件不直接支持预览功能。 - 使用HTML5的`FileReader` API,可以在用户选择文件后读取其内容并显示为预览图像(适用于图片)或文本(适用于...
这个库使得在Java应用程序中实现文件上传变得简单,无论是Web应用还是其他需要接收文件的HTTP服务。下面我们将详细探讨FileUpload的工作原理、如何使用以及其关键特性。 一、工作原理 FileUpload的核心是解析HTTP...
本教程将详细介绍如何利用commons-fileupload实现文件上传功能,并提供一个简单的实例。 **一、Apache Commons FileUpload简介** Apache Commons FileUpload是Apache软件基金会开发的一个开源组件,专门处理HTTP...
使用FileUpload组件实现上传功能,供大家一起共同分享学习。
本教程将探讨如何在Java Web环境下实现多文件上传与下载的机制。 首先,我们来了解一下多文件上传。在HTML5之后,浏览器支持了多文件选择功能,这使得在表单中可以一次性选择多个文件进行上传。在Java Web应用中,...
**借助Commons FileUpload组件实现文件上传** Apache Commons FileUpload组件简化了文件上传的处理过程。首先,你需要在项目中引入两个JAR包:`commons-fileupload.jar`和`commons-io.jar`。然后,在Servlet中,你...
"commons-fileupload实现jsp上传实例(源码)" 这个标题表明了我们讨论的主题是关于使用Apache Commons FileUpload库在JavaServer Pages (JSP)中实现文件上传的功能,并且提供了源代码作为参考。Apache Commons ...
6. **与Struts框架集成**:在Struts框架中,可以利用FileUpload与ActionForm结合,处理用户上传的文件。需要在struts-config.xml中配置相应的Form Bean,并在Action类中处理上传的文件。 7. **错误处理**:在处理...
综上所述,"fileupload文件上传下载代码示例"是一个关于使用Java进行文件上传和下载的实践项目。通过学习和理解这些代码,开发者可以掌握在Web应用中处理文件上传和下载的核心技术,从而在实际工作中实现类似功能。
准备工作部分强调了在使用commons-fileupload实现文件上传时,需要引入commons-fileupload和commons-io这两个重要的jar包。如果只添加commons-fileupload-1.3.jar和commons-io-2.4.jar是不够的,可能会出现错误。...