分享
 
 
 

使用JSF和MyFaces实现文件上载

王朝html/css/js·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

Web浏览器为我们利用Web应用程序发送文件提供了一条简单的途径,但是当前版本的java Web标准(servlets、jsp和JSF)却无法为我们提供任何帮助。

幸运的是,有一些第三方框架组件(例如Apache Commons File Upload、 Apache MyFaces和Oracle ADF Faces)实现了这种特性,它们都暴露了简单的API和定制的标记(tag)。

本文的前面一部分介绍文件上载操作是如何实现的,解释了MyFaces和通用文件上载(前者在内部使用了后者)。我们了解这些开放源代码框架组件的内部工作方式是非常重要的,因为只有这样我们才能高效率地使用它们,才能根据自己的需要对它们进行修改。本文的第二部分将介绍一个简单的应用程序,它让用户使用web浏览器上载文件。

基于Web的文件上载

我们把"上载"这个专业术语用得有点过滥了。Web治理员在自己的站点上发布文件的时候,它会说自己"上载"了一个文件。Web开发者在建立Html窗体和脚本,让普通用户通过web浏览器发送一个文件的时候,他也会说自己实现了文件"上载"功能。

这两种含义在某些方面是重叠的,因为web治理员可能使用基于web的界面来发布文件(页面、图像、脚本等等)。免费提供个人web站点的公司(例如Yahoo),实现基于web的文件上载功能的目的是为了让人们上载自己的页面。它答应任何一个拥有web浏览器和互联网访问能力的个人发布一个小型的web站点。但是,目前有一些更好的、可用于发布web内容的方式,例如FTP或安全FTP。在这种情况下,你可以利用专用的应用程序(例如FTP客户端)代替web浏览器把自己的内容上载到web服务器上。

本文从web开发者的角度来讨论文件上载的问题。例如,一个基于web的邮件应用程序(例如Yahoo邮件),就实现了文件上载,因为只有这样,用户才能够发送那些带有附件的消息。另一个比较好的例子是找工作的web站点,它答应用户把自己的简历发送给招聘人员。本文的示例应用程序计算上载文件的散列值。你可以在自己的应用程序中对上载的文件进行任意的处理,例如把它们的内容存储在数据库中或把它们作为邮件附件发送。现在,让我们看看如何在web应用程序中实现文件上载吧。

一个HTML窗体中可以包含一个或多个<input type="file">元素,浏览器把它们作为输入字段来显示(呈现),在这些字段中答应用户输入文件路径。在每个文件输入字段的后面,web浏览器会添加一个按钮,它会打开一个文件对话框,让用户选择一个文件(代替输入路径):

图1:包含文件输入字段的web窗体

当用户点击窗体的"提交(Submit)"按钮的时候,web浏览器对窗体的数据进行编码,其中包括被选中的文件、文件名(或路径)和窗体的其它一些参数。接着,浏览器把编码后的数据发送给web服务器,web服务器把这些数据传递给<form>标记的action属性所指定的脚本来处理。假如你开发一个Java web应用程序,那么操作脚本可能是一个servlet(小服务程序)或JSP页面。

由于窗体数据默认的编码方式和默认的GET方法都不适合文件上载,所以包含文件输入字段的窗体必须在<form>标记中指定multipart/form-data编码方式和POST方法:

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有