`
xiangxuehai_jiaer
  • 浏览: 92638 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论

FileUpLoad实现文件上传与下载

 
阅读更多

首先需要两个第三方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");

	}
}

 

分享到:
评论

相关推荐

    fileupload实现文件上传和下载

    我自己编写的jsp页面利用fileupload组建实现文件上传和下载,简单易懂。仅供初学者参考...

    commons-fileupload实现文件上传

    本篇将详细讲解如何使用Commons FileUpload来实现文件上传的功能。 首先,理解HTTP协议中的多部分数据是至关重要的。在HTML表单提交文件时,通常会使用`enctype="multipart/form-data"`属性,此时,数据会被分割成...

    使用commons-fileupload实现的文件上传和下载

    通过以上步骤,你可以成功地使用Apache Commons FileUpload实现文件上传和下载功能,并避免中文乱码问题。在实际开发中,还可以结合Spring MVC或Struts等框架,进一步简化代码和提高代码的可维护性。

    commons-fileupload实现文件上传下载

    ### Commons-FileUpload 实现文件上传下载 #### 知识点概述 Commons-FileUpload 是 Apache 提供的一个用于处理 HTTP 文件上传的组件。它基于 Servlet 规范,并且能够解析来自 `multipart/form-data` 编码类型的 ...

    使用fileupload组件实现文件上传功能

    使用fileupload组件实现文件上传功能 FileUpload组件是Apache提供的一款文件上传组件,能够帮助我们轻松实现文件上传功能。下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两...

    C# .NET FileUpload 多文件上传例子

    首先,我们要知道ASP.NET中的`&lt;asp:FileUpload&gt;`控件是实现文件上传的核心组件。它可以允许用户从本地计算机选择一个或多个文件,并将这些文件上传到服务器。在多文件上传中,我们需要确保控件的`Multiple`属性设置...

    struts1.2和commons-fileupload实现文件上传

    Struts1.2和Commons-Fileupload是Java Web开发中用于实现文件上传的两个重要组件。Struts1.2是Apache的一个开源框架,主要用于构建MVC(模型-视图-控制器)架构的Web应用程序,而Commons-Fileupload则是Apache ...

    java实现的文件上传下载FileUpLoad

    Java 实现的文件上传下载功能是Web开发中的一个重要部分,主要涉及到HTTP协议、Servlet、文件I/O以及数据库操作等技术。在这个"FileUpLoad"项目中,开发者使用了Struts2框架来处理用户请求,Oracle数据库存储文件元...

    JAVA使用commos-fileupload实现文件上传与下载实例解析

    Java使用Apache Commons FileUpload实现文件上传与下载是一个常见的任务,特别是在开发Web应用程序时。Apache Commons FileUpload是一个专门处理HTTP协议中的多部分/形式数据(multipart/form-data)的库,这通常...

    FileUpload控件自动上传

    - 要实现文件预览,我们需要在客户端JavaScript中处理,因为FileUpload控件不直接支持预览功能。 - 使用HTML5的`FileReader` API,可以在用户选择文件后读取其内容并显示为预览图像(适用于图片)或文本(适用于...

    Apache Commons fileUpload实现文件上传

    这个库使得在Java应用程序中实现文件上传变得简单,无论是Web应用还是其他需要接收文件的HTTP服务。下面我们将详细探讨FileUpload的工作原理、如何使用以及其关键特性。 一、工作原理 FileUpload的核心是解析HTTP...

    commons-fileupload文件上传实例

    本教程将详细介绍如何利用commons-fileupload实现文件上传功能,并提供一个简单的实例。 **一、Apache Commons FileUpload简介** Apache Commons FileUpload是Apache软件基金会开发的一个开源组件,专门处理HTTP...

    使用FileUpload组件实现上传功能

    使用FileUpload组件实现上传功能,供大家一起共同分享学习。

    FileUpload实现多文件上传与下载

    本教程将探讨如何在Java Web环境下实现多文件上传与下载的机制。 首先,我们来了解一下多文件上传。在HTML5之后,浏览器支持了多文件选择功能,这使得在表单中可以一次性选择多个文件进行上传。在Java Web应用中,...

    commons fileupload实现文件上传的实例代码

    **借助Commons FileUpload组件实现文件上传** Apache Commons FileUpload组件简化了文件上传的处理过程。首先,你需要在项目中引入两个JAR包:`commons-fileupload.jar`和`commons-io.jar`。然后,在Servlet中,你...

    commons-fileupload实现jsp上传实例(源码)

    "commons-fileupload实现jsp上传实例(源码)" 这个标题表明了我们讨论的主题是关于使用Apache Commons FileUpload库在JavaServer Pages (JSP)中实现文件上传的功能,并且提供了源代码作为参考。Apache Commons ...

    commons fileupload实现文件上传

    6. **与Struts框架集成**:在Struts框架中,可以利用FileUpload与ActionForm结合,处理用户上传的文件。需要在struts-config.xml中配置相应的Form Bean,并在Action类中处理上传的文件。 7. **错误处理**:在处理...

    fileupload文件上传下载代码示例

    综上所述,"fileupload文件上传下载代码示例"是一个关于使用Java进行文件上传和下载的实践项目。通过学习和理解这些代码,开发者可以掌握在Web应用中处理文件上传和下载的核心技术,从而在实际工作中实现类似功能。

    commons-fileupload实现jsp上传实例(教程).pdf

    准备工作部分强调了在使用commons-fileupload实现文件上传时,需要引入commons-fileupload和commons-io这两个重要的jar包。如果只添加commons-fileupload-1.3.jar和commons-io-2.4.jar是不够的,可能会出现错误。...

Global site tag (gtag.js) - Google Analytics