JavaBean实现多文件上传的两种方法

魁拔天枰

魁拔天枰

2016-01-29 12:16

JavaBean实现多文件上传的两种方法,JavaBean实现多文件上传的两种方法
 

  摘要:本文介绍了JavaBean实现多个文件上传的两种方法,分别是使用http协议和ftp协议实现。首先讲述了http协议传送多个文件的基本格式和实现上传的详细过程,之后简单介绍了使用ftpclient 类实现了ftp方式的上传,最后对这两种方法进行了比较。

  关键字:JavaBean 、http 、ftp 、ftpclient

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)

  JavaBean是一种基于Java的软件组件。JSP对于在Web 应用中集成JavaBean组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为JSP应用带来了更多的可伸缩性。

  文件的上传功能在基于B/S的开发模式中非常普遍。同其他开发工具相比较,JSP对文件的上传支持并不是很完美,它既不象ASP那样一定需要使用组件来完成,也不像PHP那样直接提供了文件上载的支持。JSP实现文件上传的实现方式是这样的:使用ServletRequest类的getInputStream()方法获得一个客户端向服务器发出的数据流,然后处理这个数据流,从中分析、得到文件上传中传递到服务器的各个参数和数据,然后将其中的文件数据存储为一个文件或插入到数据库中。通常JSP页面中不处理文件的上传功能,而是把这些功能放到Servlet 或JavaBean中去实现。使用Servlet完成文件上传的例子在一些JSP的相关书籍中都有所介绍,我这里介绍使用JeanBean是如何完成文件上传的。JSP中实现文件的上传可以采用两种方式即采用HTTP协议和FTP协议实现,二者在传输的原理上存在很大的差异。以下将结合源代码对它们的实现做简单介绍,相信读者会从中有所收获。以下程序已经调试通过。调试的环境:window 2000 server+Apache +tomcat4.0,JavaBean调试环境:JDK1.4+Editplus。

  在JSP中使用JavaBean实现基于Web的文件上传功能一般需要三种文件结合完成。这三种文件分别是提供界面的HTML页面文件、完成调用实现上传功能的JavaBean的JSP文件和实现JavaBean的Java的类文件。以下我将重点讲述采用HTTP协议和FTP协议实现文件上传功能的JavaBean部分。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)

  1 采用HTTP协议实现多个文件的上传

  在过去的Html中,表单不能实现文件的上传,这多少限制了一些网页的功能。RFC1867规范(即Html中实现基于表单的文件上传)对表单作出了扩展,增加了一个表单元素〈input type=file。通过使用这个元素,浏览器会自动生成一个输入框和一个按钮,输入框可供用户填写本地的文件名和路径名,按钮可以让浏览器打开一个文件选择框供用户选择文件。具体的表单实现如下:

<FORMMETHOD="POST" ACTION="*.jsp" ENCTYPE="multipart/form-data"
<INPUT TYPE="FILE" NAME="FILE1" SIZE="50"<BR
<INPUT TYPE="SUBMIT" VALUE="Upload"
</FORM

  当选择了粘贴文件后就直接输入本地文件的绝对路径,表单的action属性值是*.jsp,这意味着请求(包括上载的文件)将发送给*..jsp文件。在这个过程中实际上就实现了HTTP方式的文件上载。文件从客户端到服务器的上载是由HTTP协议的通用网关界面(CGI)支持的。这种上载方式要求浏览器和WEBServer两方面都能够支持Rfc1867。JavaBean 通过ServletRequest类的getInputStream()方法获得一个客户端向服务器发出的数据流、分析上传的文件格式,根据分析结果将多个文件依次输出服务器端的目标文件中。本例中的JavaBeande的功能是由testUpload类具体实现。TestUpload类的框架如下:

public class testUpload
{
public testUpload(){……}
public final void initialize(ServletConfig config) throws ServletException
{ m_application = config.getServletContext(); }
public void upload() throws testUploadException, IOException, ServletException
{………}
private void getDataSection(){………}
private void getDataHeader(){………}
public int save (String destPathName)
throws SmartUploadException, IOException, ServletException
{………}
……
}

  通过initialize()方法初始化Servlet的运行环境。使用upload()方法获得输入流,并分析上传文件的格式,并将各个上传文件的属性赋给多个File类实例处理,这些File类实例由Files类管理。File类根据各文件的属性调用它的save ()方法将多个文件依次输出服务器端的目标文件中。其中upload()方法是关键,用于分析http1.1协议传送文件的格式。经过测试,我们得出传输流文件的格式,这对理解upload()方法很有用。例如,上传我的文档tt.txt文件。格式如下:

//文件分隔符
-----------------------------7d226137250336
//文件信息头
Content-Disposition: form-data; name="FILE1"; filename="C:Documents and SettingsAdministrator.TIMBER-4O6B0ZZ0My Documentstt.sql"
Content-Type: text/plain
//源文件内容
create table info(
content image null);
//下一个文件的分隔符
-----------------------------7d226137250336
C

展开更多 50%)
分享

猜你喜欢

JavaBean实现多文件上传的两种方法

Java JAVA基础
JavaBean实现多文件上传的两种方法

JavaBean实现多文件上传

Java JAVA基础
JavaBean实现多文件上传

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

实现树状结构的两种方法

Web开发
实现树状结构的两种方法

合并多个WPS文件的两种方法

电脑入门
合并多个WPS文件的两种方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用ASP实现网页保密的两种方法

ASP
用ASP实现网页保密的两种方法

使用ASP实现文件上载(上传)的各种方法

ASP
使用ASP实现文件上载(上传)的各种方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《炉石传说》天梯全段位相关介绍

《炉石传说》天梯全段位相关介绍

模拟退火算法求解TSP问题

模拟退火算法求解TSP问题
下拉加载更多内容 ↓