`
soongbo
  • 浏览: 88714 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java开发中文件上传应用

    博客分类:
  • Java
阅读更多
   今天闲暇无所事事,很长时间没有写博客了,突然想起很多开发web项目中,对于文件上传习惯于使用Apache下commons-fileupload来实现上传。本人实现了一个servlet文件的上传,由于本人水平有限,希望各位大虾拍砖。废话不多讲,直接上主菜………
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class UploadServlet extends HttpServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private static final String saveDir = new String("e:");
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		InputStream is = null;
		FileOutputStream os = null;
		try {
			is = req.getInputStream();
			String savePath = saveDir + File.separator + getFileName(
					new byte[1024], req.getInputStream(), "UTF-8")
					.replaceAll("\"", "");
			
			File destFile = new File(savePath);
			os = new FileOutputStream(destFile);
			byte[] tempByte = new byte[1024];
			int byteread = 0;
			while ((byteread = is.read(tempByte)) != -1) {
				os.write(tempByte, 0, byteread);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (null != is) {
				is.close();
			}
			if (null != os) {
				os.close();
			}
		}
	}
	
	/**
	 * 获得文件名称
	 * @param buffer
	 * @param servletinputstream
	 * @param charset
	 * @return
	 */
	private String getFileName(byte[] buffer, ServletInputStream servletinputstream, String charset) {
		String line = null;
		while ( (line = readLine(servletinputstream, buffer, charset)) != null) {
			if (line.startsWith("Content-Disposition: form-data;")) {
				int i = line.indexOf("filename=");
				if (i >= 0) {
					String fName = subFullName(line);
					if (fName.equals("")) {
							continue;
						}
					return fName;
				}
			} else {
				continue;
			}
		}
		return null;
	}
	
	/**
	 * 读取指定byte[]数组长度的String
	 * @param is
	 * @param buffer
	 * @param charset
	 * @return
	 */
	private String readLine(ServletInputStream is, byte[] buffer, String charset) {
		int len = 0;
		try {
			len = is.readLine(buffer, 0, buffer.length);
			if (-1 == len) {
				return null;
			}
			if (null != charset) {
				return new String(buffer, 0, buffer.length);
			} else {
				return new String(buffer, 0, buffer.length, charset);
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 截取文件名称
	 * @param line
	 * @return
	 */
	private String subFullName(String line) {
		if (line == null) {
			return "";
		}
		int i = line.indexOf("filename=");
		line = line.substring(i + 9).trim();
		i = line.lastIndexOf("");
		if (i < 0 || i >= line.length() - 1) {
			i = line.lastIndexOf("/");
			if (line.equals("")) {
				return "";
			}
			if (i < 0 || i >= line.length() - 1) {
				return line;
			}
		}
		return line.substring(i + 1, line.length() - 1);
	}
}
分享到:
评论

相关推荐

    Java 上传文件到 SharePoint

    在实际开发中,你还需要考虑错误处理和异常捕获,确保在文件上传过程中遇到问题时能够妥善处理。此外,如果SharePoint的访问控制较为严格,可能需要使用ADAL(Active Directory Authentication Library)来获取访问...

    java多文件上传

    在Java开发中,多文件上传是一项常见的功能,尤其在Web应用程序中,如用户需要上传图片、文档等附件。本示例提供了实现这一功能的具体代码和数据库相关资源,旨在帮助开发者快速构建自己的多文件上传功能。 首先,...

    java实现文件批量上传

    在Java开发中,文件批量上传是一项常见的功能,尤其在企业级应用中,用户可能需要上传大量数据或文件。本教程将介绍如何利用SWF(Simple Workflow)和EXT库来实现这一功能。SWF是一个用于创建富互联网应用程序的前端...

    java 实现大文件上传

    通过本文介绍的方法,我们可以有效地利用Apache Commons FileUpload组件实现在Java Web应用中的文件上传功能。相比于Smartupload等早期组件,Apache Commons FileUpload提供了更为强大的文件处理能力,并且拥有活跃...

    java多文件上传实现

    在Java开发中,多文件上传是一项常见的功能,尤其在Web应用中,用户可能需要一次性上传多个文件,如图片、文档等。本知识点将详细介绍如何在Java中实现这一功能,以及结合Flash实现上传界面并显示上传进度条。 1. *...

    JFrame文件上传Java_swing应用

    本项目“JFrame文件上传Java_swing应用”是一个典型的Swing应用实例,包含了登录、文件上传、日期选择以及文件检索等常见功能,非常适合学习和自定义改造。 首先,我们来详细解析每个关键知识点: 1. **JFrame**:...

    java上传文件jar

    总之,Apache Commons IO和Apache Commons FileUpload是Java开发中处理文件上传不可或缺的工具。它们提供了丰富的功能,帮助开发者安全、高效地完成文件上传操作,同时也大大减少了处理文件上传时可能出现的问题。在...

    基于java的企业级应用开发:文件上传和下载.ppt

    【基于Java的企业级应用开发:文件上传和下载】 在企业级应用开发中,文件上传和下载是常见的功能需求。在Java环境下,我们可以利用...理解并熟练运用这些知识点,可以有效地实现在应用中添加文件上传和下载功能。

    JAVA开发文件上传源码

    "JAVA开发文件上传源码"这个主题着重于使用POI技术处理Office文件,特别是Excel文件的上传。POI是Apache软件基金会的一个开源项目,提供了API用于读写Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。 ...

    java实现大文件上传并有进度条及其代码解析

    在Java开发中,处理大文件上传是一项常见的任务,特别是在Web应用中。为了提供更好的用户体验,通常需要添加进度条功能,让用户了解文件上传的状态。本文将详细介绍如何使用Java实现大文件的上传并展示进度条,同时...

    性能最好的Java文件上传组件

    在Java开发中,文件上传是一项常见的任务,尤其是在构建Web应用时。"性能最好的Java文件上传组件"是指一种优化了上传速度和资源消耗的工具,它能够有效地处理大文件上传、多文件并发上传等问题,提高应用的用户体验...

    Java对Samba进行上传与下载文件-jcifs

    在实际应用中,"sambatest"可能是一个包含示例代码的项目,包括了具体的Samba文件上传和下载功能。这个项目可以作为学习和参考,帮助理解如何将jcifs库集成到Java应用中,实现与Samba服务器的交互。 总的来说,Java...

    Java高性能文件上传及下载

    在Java开发中,实现高性能的文件上传和下载是至关重要的技术环节,特别是在处理大量用户交互或者大数据量传输的场景下。本资料集主要探讨如何利用Java技术和相关工具库来优化这一过程,确保系统的稳定性和效率。 ...

    java 利用webservice传输文件

    在实际应用中,Java Web服务通常会采用诸如Apache CXF或Spring WS这样的框架来简化Web服务的开发、部署和测试。这些框架提供了丰富的工具和API,使得开发者可以更专注于业务逻辑,而不是底层的通信细节。 总的来说...

    java实现大文件上传分片上传断点续传.zip

    在Java开发中,大文件上传是一项常见的需求,尤其是在云存储、大数据传输以及互联网应用中。本项目"java实现大文件上传分片上传断点续传.zip"提供了一个基于SpringBoot框架的解决方案,它实现了大文件的分片上传和...

    基于Java的FastDFS大文件上传与断点续传设计源码

    本源码项目是基于Java的FastDFS大文件上传与断点续传设计,包含36个文件,主要使用Java、JavaScript和CSS编程语言。该项目旨在实现h5与fastdfs之间的高性能断点续传、秒传、大文件上传以及使用redis文件锁。系统提供...

    java上传文件接口调用源码案例

    在Java编程中,文件上传是常见的任务之一,特别是...通过这个"java上传文件接口调用源码案例",我们可以学习到如何在Java环境中实现文件上传功能,这在开发Web应用、移动应用或者后端服务时都是一项基础且重要的技能。

    JAVA Socket编程实现文件上传

    在这个场景中,我们讨论的是如何使用Java的Socket来实现文件上传功能,即从客户端将文件发送到服务器,然后保存到服务器的数据库中。这个过程涉及到多个关键知识点,下面我们将详细探讨。 1. **Java Socket基础**:...

    java Swing 文件批量上传 DEMO 源代码

    总的来说,这个Java Swing 文件批量上传DEMO涵盖了Java GUI编程、文件I/O、网络编程、多线程以及用户交互等多个方面,对于初学者来说,是一个很好的实践项目,可以帮助他们深入理解Java Swing的应用及文件上传的实现...

    java+mysql文件上传器

    【Java + MySQL 文件上传器详解】 在IT领域,文件上传是一项常见的功能,广泛应用于各种Web应用,如社交媒体、云存储服务等。本项目名为“java+mysql文件上传器”,是基于Java编程语言和MySQL数据库实现的文件上传...

Global site tag (gtag.js) - Google Analytics