`
yangjay
  • 浏览: 5780 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个人做项目的感受-Commons FileUpload文件上传

    博客分类:
  • j2ee
阅读更多

    到现在才真正体会到一个人做项目的感受,我说的不是一个人做着玩的。在一个公司里给他们做项目管理软件(他们的项目不是软件项目哦)。

    我一个人充当了好多人的角色,我也不认为到现在为止我的水平有多高,但是我现在确实是充当软件架构师的角色。项目到现在做了有两个多月了,在这个过程中出现了不少系统框架上的问题还有数据库设计的不完善造成的一系列问题。从一开始就没有做完整的需求分析,因为那个时候他们也不是很清楚要做一个什么样的东西出来,需求都很模糊。只是一个大概的构想,我但是就想了要把他们这种构想转化为需求的话也就等于是空想。所以只能是走一步说一步。需求是一步一步在变,我好像也是一步一步在改,改东西是最烦人的事情。

    不写了,下班,明天继续。

    接着昨天的写,昏昏沉沉的有敲了一天的代码

    前些天做了有关文件上传的一些东西,现在把它贴出来

用的是Apache的Commons FileUpload组建

    首先是要把需要的jar包放到WEB-INF的lib目录下,需要的jar包全部在附件里,没有的可以去下载

jsp文件:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>My JSP 'upload.jsp' starting page</title>
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	</head>
	<body>

		<form action="UploadServlet" method="post" enctype="multipart/form-data">
			<table border="1" align="center">
				<caption>
					请选择要上传的文件
				</caption>
				<tr>
					<td>
						上传人
					</td>
					<td>
						<input type="text" name="name">
					</td>
				</tr>
								<tr>
					<td>
						上传文件
					</td>
					<td>
						<input type="file"  name="file1name">
						<input type="file"  name="file1name">
					</td>
				</tr>
								<tr>
					<td>
						<input type="submit" name="submit" value="上传" >
					</td>
					<td>
						<input type="reset" name="rest" value="重置">
					</td>
				</tr>
			</table>
		</form>
	</body>
</html>

 


 UploadServlet.java

 

package com.xiang;

import java.io.IOException;
import java.io.*;
import java.util.*;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet {
	private ServletContext app;

	private String savePath;

	public void init(ServletConfig conf) {
		savePath = conf.getInitParameter("savePath");
		app = conf.getServletContext();// 获取servlet上下文,init方法只执行一次;
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=GBK");
		PrintWriter out = response.getWriter();
		request.setCharacterEncoding("GBK");

		DiskFileItemFactory dif = new DiskFileItemFactory();

		ServletFileUpload load = new ServletFileUpload(dif);
		try {
			//工程必须得有commons-io-1.4.jar,不然这个位置会报错
			List items = load.parseRequest(request);// 解析reqeust,包括所传过来的参数,文件等等吧,总之请求过来的所有东西都在这里放着呢

			Iterator it = items.iterator();// 既然items里包含了很多东西,那么我们需要取出每一个看看都是什么东西,主要区分input类型是text还是file
			while (it.hasNext()) {
				FileItem item = (FileItem) it.next();// 取出items里每一个元素,item即可是普通的文本信息,又可以是所上传的文件

				if (item.isFormField()) {// 如果此方法返回真,说明就是普通的文本信息,相反就是文件啦
					// 如果是普通文本信息,简单处理, 输出信息
					System.out.println("表单参数的名字" + item.getFieldName()
							+ "<br/>" + "表单参数的值" + item.getString("GBK"));

				} else {
					// 上传文件
					// 判断用户是否选择的上传文件
					if (item.getName() != null && !item.getName().equals("")) {

						System.out.println("上传文件的大小" + item.getSize());
						System.out.println("上传文件的类型" + item.getContentType());
						System.out.println("上传文件的名称" + item.getName());// 此处获得的名字,是客户端所选择的文件的路径和文件名,而我们往服务器保存时,要从新指定服务器端的路径

						File tempFile = new File(item.getName());// 临时性的,目的调用它的tempFile.getName()方法,仅仅获取所上传文件的名字而不要路径

						System.out.println("文件名字:" + tempFile.getName());
						// app.getRealPath("/");
						System.out.println("当前工程的绝对路径:" + app.getRealPath("/"));
						// 从新获取file,而此file才是真正的所要上传的
						File file = new File(app.getRealPath("/") + savePath,
								tempFile.getName());// 注意新file的构建,逗号前边是路径,后面是文件名

						item.write(file);
						System.out.println("上传成功");
					}

				}

			}

		} catch (Exception e) {
			e.printStackTrace();
		}

	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

 

 

 

 不要忘记在web.xml里田间配置

<servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>UploadServlet</servlet-name>
    <servlet-class>com.accp.UploadServlet</servlet-class>
    <init-param>
    <param-name>savePath</param-name>
    <param-value>uploads</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>UploadServlet</servlet-name>
    <url-pattern>/UploadServlet</url-pattern>
  </servlet-mapping>

 

 大功告成

0
0
分享到:
评论

相关推荐

    开发工具 commons-fileupload-1.3.2

    开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2...

    commons-fileupload-1.4-API文档-中文版.zip

    赠送jar包:commons-fileupload-1.4.jar; 赠送原API文档:commons-fileupload-1.4-javadoc.jar; 赠送源代码:commons-fileupload-1.4-sources.jar; 赠送Maven依赖信息文件:commons-fileupload-1.4.pom; 包含...

    commons-fileupload-1.2.2

    commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-...

    commons commons-fileupload历史版本jar包集合

    commons commons-fileupload历史版本jar包集合,包括src源码 附件列表: commons-fileupload-1.0.zip commons-fileupload-1.1.1.zip commons-fileupload-1.1.zip commons-fileupload-1.2.1-bin.zip commons-...

    commons-fileupload commons-fileupload-1.2.1-bin

    commons-fileupload-1.2.1-bin commons-fileupload 文件上传 commons-fileupload-1.2.1-bin commons-fileupload 文件上传 jar包 及相关文档

    commons-fileupload-1.3.3-API文档-中文版.zip

    赠送jar包:commons-fileupload-1.3.3.jar; 赠送原API文档:commons-fileupload-1.3.3-javadoc.jar; 赠送源代码:commons-fileupload-1.3.3-sources.jar; 赠送Maven依赖信息文件:commons-fileupload-1.3.3.pom;...

    使用commons-fileupload上传文件

    【使用commons-fileupload上传文件】 Apache Commons FileUpload是Apache组织的一个子项目,专注于处理HTTP文件上传。这个组件提供了一个简洁的API,使得开发者能够轻松地在Java应用中处理由浏览器发送的多部分...

    java+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载

    Apache Commons IO是一个Java库,提供了大量的实用工具类,用于处理基本的IO操作,如读写文件、复制流、处理路径等。而Apache Commons FileUpload则专门用于处理HTTP请求中的多部分数据,即文件上传。 二、Servlet...

    commons-fileupload-1.3.jar和commons-io-1.2.jar.zip

    在这个场景中,我们关注的是"commons-fileupload-1.3.jar"和"commons-io-1.2.jar"这两个文件,它们被打包在一个名为"commons-fileupload-1.3.jar和commons-io-1.2.jar.zip"的压缩文件中。 **Apache Commons ...

    commons-fileupload-1.3.3.jar和commons-io-2.6.jar

    在Java开发中,上传文件是一项常见的任务,而`commons-fileupload-1.3.3.jar`和`commons-io-2.6.jar`是Apache Commons项目中的两个重要库,专门用于处理HTTP请求中的文件上传功能。这两个库为开发者提供了便捷、高效...

    commons-fileupload实现文件上传

    创建一个Servlet或者Spring MVC的Controller,用于接收文件上传请求。在doPost或相应的处理方法中,初始化FileUpload对象。 3. **解析请求** 使用`ServletFileUpload`类解析请求,这一步会将多部分数据转换为可...

    commons-fileupload-1.3.3-bin

    在压缩包中,除了`commons-fileupload-1.3.3-bin`外,还包含了一个`commons-io-2.6-bin.zip`。Apache Commons IO是另一个实用库,提供了一系列与I/O相关的工具类,包括文件操作、流处理、读写字符和字节等。在处理...

    commons-fileupload 文件上传 图片上传 demo

    至于文件列表中提到的"Roger",这可能是实际的项目文件或代码示例,具体内容没有给出,但根据标题“demo”可以推测,这可能是一个演示如何使用`commons-fileupload`进行图片上传的Java代码示例。 在实际应用中,...

    commons-fileupload-1.3.3&commons-fileupload-1.3.3架包和代码.rar

    标题中的"commons-fileupload-1.3.3&commons-fileupload-1.3.3架包和代码.rar"提到了Apache Commons FileUpload的1.3.3版本的库及其源码。Apache Commons FileUpload是一个Java库,专门用于处理HTTP协议中的多部分...

    commons-fileupload实现文件上传下载

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

    commons-fileupload-1.3.3.jar和commons-io-1.3.2.jar程序文件

    标题中的"commons-fileupload-1.3.3.jar"和"commons-io-1.3.2.jar"是两个在Java开发中广泛使用的开源库,分别用于处理HTTP协议下的文件上传和一般I/O操作。这两个库是由Apache软件基金会提供的,属于Apache Commons...

    commons-fileupload-1.3.2.jar

    Apache Commons FileUpload是一个Java库,专门用于处理HTTP协议中的文件上传功能。这个"commons-fileupload-1.3.2.jar"是该库的1.3.2版本,它支持Java Development Kit (JDK) 1.5及以上版本。在本文中,我们将深入...

    commons-fileupload-1.3.2jar包和commons-io-2.5jar包.zip

    例如,你可以使用FileUpload的`DiskFileItemFactory`创建一个工厂,用来处理文件项,接着使用`ServletFileUpload`解析请求,最后通过`FileItem`接口访问每个上传的文件。 以下是一个简单的示例,展示了如何在JSP中...

    commons-fileupload-1.4-bin.zip

    标题中的"commons-fileupload-1.4-bin.zip"表明这是一个包含Apache Commons FileUpload 1.4版本的二进制文件包,而描述中的"fileupload-1.4"进一步确认了这个版本号。 Apache Commons FileUpload的主要功能在于解析...

    commons-fileupload文件上传实例

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

Global site tag (gtag.js) - Google Analytics