- 浏览: 447150 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (162)
- easymock (3)
- 模板引擎 (3)
- JForum (4)
- web (9)
- spring (10)
- java (20)
- struts (9)
- uml (3)
- java pattern (19)
- JQuery (14)
- 多线程 (13)
- database (21)
- PS (3)
- ejb (6)
- 版本管理 svn , maven , ant (2)
- protocol (1)
- 测试 (1)
- ws (7)
- Apache (4)
- 脚本语言 (1)
- guice (1)
- 分布式 (4)
- 架构 (0)
- 经验 (1)
- 版本管理 svn (1)
- maven (1)
- ant (1)
- 书籍 (1)
- Linux (1)
最新评论
-
Master-Gao:
稍微明白了点,,有点萌萌哒
为什么匿名内部类参数必须为final类型 -
waw0931:
终于明白了,谢谢!
为什么匿名内部类参数必须为final类型 -
十三圆桌骑士:
提供了两个链接还是有用的。
安装Mondrian -
放方芳:
[flash=200,200][/flash]
Freemarker标签使用 -
放方芳:
[b][/b]
Freemarker标签使用
OYM的任务中,有个要求,上传一个Excel文件,检查他的内容是否合法,并返回信息。
今天想了一下,第一个要解决的问题就是上传一个Excel文件,上传文件的组件到挺多的,网上一搜,就有一大堆教程,但是现在并不是要上传一个文件到服务器以作存储之用,而是要上传一个文件到内存里,以Java的数据结构存储起来,并检查,把合乎要求的数据写到数据库里。所以在网上的一大堆上传文件的组件并不合用。于是又想自己写,思路就是从客户端那里获取一个InputStream,然后就对这个InputStream做一系列的检查。代码如下:
ServletInputStream sis = request.getInputStream();
InputStreamReader isr = new InputStreamReader(sis);
int ch;
while((ch = isr.read()) != -1 ) {
out.println((char)ch);
}
System.out.flush();
结果的出去就是如下(输出东西写到页面):
-----------------------------7d7ea23120550
Content-Disposition: form-data; name="file1";
filename="C:\Documents and Settings\Administrator\桌面\test.txt"
Content-Type: text/plain
my name is Rokey.Rokey。我的名字叫Rokey.
-----------------------------7d7ea23120550 Content-Disposition: form-data;
name="Submit" 上传 -----------------------------7d7ea23120550--
很明显,这里只有
my name is Rokey.Rokey。我的名字叫Rokey.
对我有用,这个也正是我的文件里面的内容,其它的都是关于这些form的其它信息。对我这个程序是没有用的。如果这里写下去的话,还要我去分析那些是数据,哪些是form的参数。好,到现在为止,我已经打消了自己写的念头了。我想,那些组件都可以把上传文件封装得那么好,能不能利用那些库,抽出文件的IO流,让我操作呢?
于是,就开始对O'Reilly的上传组件cos.jar的API看,看到里面有这么一段。
public class MultipartParser
extends java.lang.Object
A utility class to handle multipart/form-data requests, the kind of requests that support file uploads. This class uses a "pull" model where the reading of incoming files and parameters is controlled by the client code, which allows incoming files to be stored into any OutputStream. If you wish to use an API which resembles HttpServletRequest, use the "push" model MultipartRequest instead. It's an easy-to-use wrapper around this class.
This class can receive arbitrarily large files (up to an artificial limit you can set), and fairly efficiently too. It cannot handle nested data (multipart content within multipart content). It can now with the latest release handle internationalized content (such as non Latin-1 filenames).
It also optionally includes enhanced buffering and Content-Length limitation. Buffering is only required if your servlet container is poorly implemented (many are, including Tomcat 3.2), but it is generally recommended because it will make a slow servlet container a lot faster, and will only make a fast servlet container a little slower. Content-Length limiting is usually only required if you find that your servlet is hanging trying to read the input stram from the POST, and it is similarly recommended because it only has a minimal impact on performance.
而且里面的API已经封装程我想象得到的情况了。于是,我就觉得这样我就可以完成我的功能了。于是,就写了以下代码:
MultipartParser mp = new MultipartParser(request, 10 * 1024 * 1024);
Part part;
while ((part = mp.readNextPart()) != null) {
if (part.isParam()) {
// it's a parameter part
ParamPart paramPart = (ParamPart) part;
//out.println("param: name=" + name + "; value=" + value);
} else if (part.isFile()) {
FilePart filePart = (FilePart) part;
InputStream is = filePart.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
int ch;
while ((ch = isr.read()) != -1) {
out.print((char) ch);
}
System.out.flush();
isr.close();
is.close();
}
}
出去结果如下:
my name is Rokey.Rokey。
我的名字叫Rokey.
今天想了一下,第一个要解决的问题就是上传一个Excel文件,上传文件的组件到挺多的,网上一搜,就有一大堆教程,但是现在并不是要上传一个文件到服务器以作存储之用,而是要上传一个文件到内存里,以Java的数据结构存储起来,并检查,把合乎要求的数据写到数据库里。所以在网上的一大堆上传文件的组件并不合用。于是又想自己写,思路就是从客户端那里获取一个InputStream,然后就对这个InputStream做一系列的检查。代码如下:
ServletInputStream sis = request.getInputStream();
InputStreamReader isr = new InputStreamReader(sis);
int ch;
while((ch = isr.read()) != -1 ) {
out.println((char)ch);
}
System.out.flush();
结果的出去就是如下(输出东西写到页面):
-----------------------------7d7ea23120550
Content-Disposition: form-data; name="file1";
filename="C:\Documents and Settings\Administrator\桌面\test.txt"
Content-Type: text/plain
my name is Rokey.Rokey。我的名字叫Rokey.
-----------------------------7d7ea23120550 Content-Disposition: form-data;
name="Submit" 上传 -----------------------------7d7ea23120550--
很明显,这里只有
my name is Rokey.Rokey。我的名字叫Rokey.
对我有用,这个也正是我的文件里面的内容,其它的都是关于这些form的其它信息。对我这个程序是没有用的。如果这里写下去的话,还要我去分析那些是数据,哪些是form的参数。好,到现在为止,我已经打消了自己写的念头了。我想,那些组件都可以把上传文件封装得那么好,能不能利用那些库,抽出文件的IO流,让我操作呢?
于是,就开始对O'Reilly的上传组件cos.jar的API看,看到里面有这么一段。
public class MultipartParser
extends java.lang.Object
A utility class to handle multipart/form-data requests, the kind of requests that support file uploads. This class uses a "pull" model where the reading of incoming files and parameters is controlled by the client code, which allows incoming files to be stored into any OutputStream. If you wish to use an API which resembles HttpServletRequest, use the "push" model MultipartRequest instead. It's an easy-to-use wrapper around this class.
This class can receive arbitrarily large files (up to an artificial limit you can set), and fairly efficiently too. It cannot handle nested data (multipart content within multipart content). It can now with the latest release handle internationalized content (such as non Latin-1 filenames).
It also optionally includes enhanced buffering and Content-Length limitation. Buffering is only required if your servlet container is poorly implemented (many are, including Tomcat 3.2), but it is generally recommended because it will make a slow servlet container a lot faster, and will only make a fast servlet container a little slower. Content-Length limiting is usually only required if you find that your servlet is hanging trying to read the input stram from the POST, and it is similarly recommended because it only has a minimal impact on performance.
而且里面的API已经封装程我想象得到的情况了。于是,我就觉得这样我就可以完成我的功能了。于是,就写了以下代码:
MultipartParser mp = new MultipartParser(request, 10 * 1024 * 1024);
Part part;
while ((part = mp.readNextPart()) != null) {
if (part.isParam()) {
// it's a parameter part
ParamPart paramPart = (ParamPart) part;
//out.println("param: name=" + name + "; value=" + value);
} else if (part.isFile()) {
FilePart filePart = (FilePart) part;
InputStream is = filePart.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
int ch;
while ((ch = isr.read()) != -1) {
out.print((char) ch);
}
System.out.flush();
isr.close();
is.close();
}
}
出去结果如下:
my name is Rokey.Rokey。
我的名字叫Rokey.
发表评论
-
swingworker
2015-07-15 14:18 0Swing应用程序员常见的错误是误用Swin ... -
理解Java对象序列化(转)
2014-05-14 22:29 0理解Java对象序列化 关于Java序列化的文章早已是汗牛 ... -
web项目中Log4j不输出到文件问题
2013-03-06 17:50 17829log4j.propert ... -
java 补码解释
2012-07-07 10:46 8711.byte的大小为8bits而int的大小为32bit ... -
jms基础概念和应用场景(转)
2012-06-13 13:34 1152原文地址:http://blog.csdn.net/KimmK ... -
java GC和运行参数
2012-05-07 21:27 0java GC和运行参数 引言有JAVA开 ... -
java类加载顺序
2012-04-26 18:58 1426当程序中调用 new 指令,或 ... -
callable和future
2012-04-26 18:29 1084import java.util.concurren ... -
为什么匿名内部类参数必须为final类型
2012-04-26 18:26 286621) 从程序设计语言的理论上:局部内部类(即:定义在方法中的 ... -
JAVA 使用final参数的原因
2012-04-06 14:59 2346先介绍一些基本概念。 ... -
Java 强引用、 软引用、 弱引用、虚引用
2012-03-06 15:23 8551 .对象的强、软、 ... -
java内存
2012-03-05 15:12 0堆大小设置 JVM 中最大堆大小有三方 ... -
Java泛型详解
2011-11-23 17:49 954优点概述:是对 Java 语言的类型系统的一种扩展,规定集合中 ... -
java 堆和栈
2011-11-08 17:44 812简单概括一下: java栈 存放 基本类型的字面 ... -
jvm全局理解
2011-09-11 15:54 10861 Java技术与Java虚拟机 说起Java,人们 ... -
hashmap死循环
2011-08-25 22:29 2344本文受http://pt.alibaba-inc. ... -
hashmap
2011-08-24 21:29 1152在Java中任何一个对象都具备equals(Object ... -
properties 占位符
2011-05-16 15:09 2201MessageFormat - java.text.M ... -
EditPlus正则表达式替换字符串详解
2010-10-12 15:51 1274正则表达式是一个查询 ... -
HashMap 源码解读
2010-08-05 16:56 1417HashMap是我们在日常写代码时最常用到的一个数据结构,它为 ...
相关推荐
文件读写操作是文件上传的另一部分,Java提供了一系列的类如`java.io.File`、`java.io.FileInputStream`、`java.io.FileOutputStream`等来处理文件的创建、读取和写入。一旦Servlet获取到上传的文件流,它会创建一个...
4. **文件大小限制和安全检查**:为了防止DoS攻击,需要设定上传文件的大小限制,并进行文件类型检查,只允许特定类型的文件上传。 二、文件下载 1. **HTTP响应和流处理**:当用户请求下载文件时,服务器需要构造...
在Java编程中,文件上传是常见的任务之一,特别是...通过这个"java上传文件接口调用源码案例",我们可以学习到如何在Java环境中实现文件上传功能,这在开发Web应用、移动应用或者后端服务时都是一项基础且重要的技能。
摘要:Java源码,文件操作,数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、...
4. **临时文件存储**:在处理上传文件时,通常先将文件保存到服务器的临时目录,以确保在处理过程中文件不会丢失。使用`java.io.File.createTempFile()`方法可以在指定目录下创建临时文件。 5. **文件验证与处理**...
本篇文章将深入探讨如何使用Java来上传文件到SharePoint。 首先,我们需要了解Java中用于文件操作的基本类,如`java.io.File`,它提供了创建、读取、写入和删除文件的方法。此外,为了与SharePoint交互,我们需要...
摘要:Java源码,文件操作,数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、...
首先,我们要关注的是`java.io`和`javax.sound.sampled`这两个Java核心包,它们提供了处理音频文件的基本功能。`javax.sound.sampled`包是Java Sound API的核心,用于音频输入、输出、格式转换以及混音等操作。 在`...
Apache Commons IO中的`DiskFileItem`是用于处理文件上传的一个关键类,特别是在处理multipart/form-data格式的数据时,这是HTTP上传文件的常见方式。`DiskFileItem`设计用来存储临时文件到磁盘上,当内存不足以容纳...
3. **大文件处理**:由于大文件不能一次性加载到内存中,因此源码可能会使用流式处理技术,如`java.io.FileInputStream`和`java.io.BufferedInputStream`,分块读取和上传文件。此外,可能还涉及到断点续传的逻辑,...
3. **创建输出流**:根据客户端上传文件的路径,服务器创建一个`FileOutputStream`实例,用于将接收到的文件数据写入到本地文件。 4. **读取输入流**:从HTTP请求的输入流中读取数据,可以使用`BufferedInputStream...
摘要:Java源码,文件操作,数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、...
Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
例如,`java.io.FileInputStream`和`java.io.FileOutputStream`用于读写本地文件,而`java.io.InputStream`和`java.io.OutputStream`则常用于网络数据传输。 - **多部分表单数据解析**:对于文件上传,Java需要解析...
1. **文件I/O操作**:在Java中,处理文件输入输出主要依赖于java.io包中的类,如FileInputStream和FileOutputStream。这些类提供了读写文件的基本方法,例如read()用于读取文件内容,write()用于写入数据。此外,...
JSch(Java Secure Channel)是一个开放源码的Java库,它实现了SSH2协议,包括SFTP功能。在本示例中,我们将深入探讨如何使用JSch库来实现通过SFTP上传整个文件夹的功能。 首先,我们需要在项目中添加JSch库。如果...
综上所述,这个“局域网聊天和文件传输[Java源码]”项目涵盖了Java桌面应用开发的多个关键方面,包括UI设计、网络通信、多线程处理和文件操作,为学习和理解这些核心技术提供了实践平台。通过深入研究这个项目,...
摘要:Java源码,文件操作,数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、...
本资源提供了两个开源库的源码:`commons-io`和`commons-fileupload`,它们是Java进行文件上传操作的重要工具。接下来,我们将详细讨论这两个库以及如何使用它们来实现图片上传功能。 `commons-io`是Apache Commons...
2. **JSP中的IO流**:在JSP中,IO流主要用于处理客户端和服务器之间的数据传输,例如文件上传和下载。JSP可以通过内置的对象如`response.getOutputStream()`获取输出流,向客户端发送数据,如文件内容。 3. **输入...