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

2016-01-29 12:16 13 1 收藏

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

【 tulaoshi.com - Java 】

 

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

  关键字:JavaBean 、http 、ftp 、ftpclient

  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部分。

  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

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

  当选择了粘贴文件后就直接输入本地文件的绝对路径,表单的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文件。格式如下:

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

//文件分隔符
-----------------------------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

来源:http://www.tulaoshi.com/n/20160129/1485352.html

延伸阅读
方法一 res/raw目录下存放,比如cwj.dat一个二进制文件,我们可以读取可以直接 代码如下: InputStream is=context.getResources().openRawResource(R.raw.cwj); 方法二 工程根目录下的assets文件夹中存放,比如assets/cwj.dat 这样我们使用下面的代码 代码如下: AssetManager am = context.getAssets(); InputStream is = ...
标签: PHP
  文件上传的实现   对ASP比较熟悉的朋友可能知道用ASP上传文件可是不太简单,PHP不同,比较容易,看例子:send.htm和get.php 如下: <!--文件send.htm -- <form ENCTYPE="multipart/form-data" ACTION="get.php" METHOD=post   <INPUT TYPE="hidden" name="MAX...
标签: 幼儿园 宝宝
宝宝上幼儿园“五要”原则 孩子刚刚入园,全家人都会有不同程度的担心:孩子在幼儿园会不会没吃饱,会不会想念家人,会不会受小朋友的欺负……于是接孩子回家后,就会出现许多新的话题。为了让孩子更好地适应幼儿园的集体生活,我们提出以下五要原则,供广大家长参考。五要分别是:要走路回家孩子刚刚入园,离开家人一整天,见到...
标签: 电脑入门
方法一 问:请问,怎样才能在word中正常使用wps文件? 答:一般来说,wps打开word文件是比较顺利的,但word打开wps文件时,若设置不对就无法打开。设置的方法是:启动word后,在工具选项常规选项下的打开时确认转换前选中,单击确定。这样以后用word打开wps文件时就会出现一个对话框,要你选择要 转换的文件
标签: windows 操作系统
1.直接设置 首先打开“资源管理器”,点击工具栏上的“搜索”按钮,在左边的“搜索助理”栏中点击“改变首选项”,系统会问你:“你想怎样使用搜索助理?”,点击中间的“改变文件和文件夹搜索行为”,然后选择“默认的文件和文件夹搜索行为”为“高级”确定即可看到“更多高级选项”这一项,点击后会弹出很多高级选项,好了,还犹豫...

经验教程

619

收藏

64
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部