教你利用WEBWORK上传文件的妙方

操作方法

  • 01

    大家都知道webwork简洁、灵活功能强大,它是一个标准的Command模式框架实现,并且完全从web层脱离出来,致力于组件化和代码重用的J2EE Web框架,但是你不知道它的另一项不错的作用,那就是还可以利用使用WEBWORK实现文件上传,下面就给大家讲讲如何使用WEBWORK实现文件上传方法. webwork利用ognl实现的资料绑定是非常实用的功能, 能够避免繁琐调用request.getParameter, object setter, 也不需要任何的多余配置文件, 再加上转换器的功能, 我们就可以用一个业务对象, 从前台一直串到后台, 再也不需要考虑String转化, 不需要DTO, 不需要FormBean了. 能够把web应用上常见的上传文件也用数据绑定来实现, 那么就是非常完美了: action再也不需要了解任何web信息, 需要对具体的Object进行操作, 就调用getObject, 需要对用户上传的文件进行操作, 就调用getFile. 在webwork2.1.5以前,也有详细介绍这一问题的,在2.1.5以后, 这个拦截器被加入了正式release版本里面: com.opensymphony.webwork.interceptor.FileUploadInterceptor 先来看一下我们的Action: 代码 我们可以看到这个Action相当的简单, 只要定义一个File类型的属性以及setter, 我们就可以用这个File对象来作任何事情了. 页面和普通的upload页面没有区别: 代码 需要注意栏位名称和Action的属性同名就可以了, 剩下的事情就是配置拦截器: xml 代码 除此之外, 这个拦截器还提供了额外的信息: ContentType和FileName供我们使用: [File Name]ContentType: 文件的ContentType(可以用在做download的时候) [File Name]FileName: 实际的文件名 在上面的action例子里, 那么有uploadFilesContentType和uploadFilesFileName这2个属性, 也能够被自动绑定. 具体的代码可以参考webwork的upload example 结论:灵活运用拦截器可以让原本复杂,繁琐的工作变得轻松,简单. 另补充几点: webwork的文件上传实际上是封装了几种通用的File Upload lib,并不是自己实现的,这它包括了pell,cos,apache common三种实现。 cos是oreilly的包,cos包的功能是最全面的,也是我最喜欢用的文件上传lib apache common 是apache的common中的一个 pell的来源我没有考证过。 webwork对这三个包的封装有些类似apache common logging,提供了一个通用的访问接口,至于具体用什么,则在webwork.properties中配置。 如果你直接使用Webwork的FileUpload拦截器,推荐你使用pell,因为当你上传中文文件名称的文件的时候,只有pell包会正确的获得中文文件名称,apache common会将文件名称改为xxxxxxx.tmp这样的文件名,而cos会乱码,因此我们唯一的选择只有pell。 webwork的封装丧失了很多cos的功能。cos需要设置request的character encoding,但是webwork的封装没有设置,所以就导致了cos的乱码问题,当然如果你单独使用cos,则会避免此类问题。 在webwork的file upload 拦截器功能中,它提供的File只是一个临时文件,Action执行之后就会被自动删除,因此你必须在Action中自己出来文件的存储问题,或者写到服务器的某个目录,或者保存到数据库中。如果你准备写到服务器的某个目录下面的话,你必须自己面临着处理文件同名的问题,但是实际上cos包已经提供了文件重名的自动重命名规则。 不复杂的应用直接使用webwork的拦截器,复杂的应用自己写拦截器调用cos来完成。

(0)

相关推荐

  • windows利用putty上传文件

    putty上传下载文件 进入putty目录 按住SHIFT然后右击,选择"在此处打开命令窗口" 上传文件:pscp "D:abc.txt" username@192.168.1.107:/home/u ...

  • FTP上传文件经常中断或超时的解决方案[完整篇]

    近日做了一个简单的活,就是把一个phpcms建的网站整站迁移到另一个空间上。原本应该是很简单的事情,无奈却处处碰壁,遇到各种问题。终于在今天把所有问题解决,特撰写此文以留纪念,同时这里面遇到的一些问题 ...

  • 金蝶云盘怎么上传文件?手机版金蝶云盘上传文件方法介绍

    金蝶云盘如何上传文件?上传文件方法。金蝶云盘能方便的上传文件到微博和微信等,只要‘扫一扫’就可以互相传文件,非常的方便,那么金蝶云盘如何上传文件呢?下面就由小编教大家金蝶云盘上传文件方法吧。 1)打开 ...

  • windows系统通过putty命令上传文件

    putty是在系统中的一个命令,所以在windows系统中可以通过它来达到上传文件的目的,安全又快速。那么要怎么利用它来完成上传文件呢?有什么步骤,一起去看看吧! putty上传下载文件 进入putt ...

  • 为什么360云盘上传文件的速度很慢?

    1.360云盘上传文件是受网速限制的,如果使用的网速不快,上传就不可能快! 2.在使用360云盘上传大文件过程上,也会出现上传速度很慢的情况,可以采用下面的方法加快上传速度! 方法一: 1.登陆&qu ...

  • 怎么上传文件至百度网盘

    教大家如何把文件上传到云网盘 操作方法 01 打开浏览器,搜索百度网盘. 02 打开百度网盘,登陆自己的百度账号. 03 进入主页面点击左上角的上传文件. 04 出现设置面板,选择要上传的文件后,打开 ...

  • 百度云盘手机版如何上传文件

    有时候我们找到了很有趣的软件想要分享给别人怎么办呢>?我们可以用网盘的形式来快速发送给别人,下面我教大家如何用网盘来上传文件 操作方法 01 打开百度云 02 登陆 03 点击上传 04 点击全 ...

  • 如何在上传文件到QQ云盘/微云

    很多时候没有带移动存储设备却需要保存重要文件时,我们会想到用云盘,那么如何在上传文件到QQ云盘/微云呢,小编教大家一个方法. 操作方法 01 登录QQ 02 点击QQ界面右下角的这个图标 03 出现了 ...

  • 百度网盘怎么上传文件/文件夹教程?

    友友今天教大家如把文件以及文件夹上传网盘,做好文件的备份工作,下面请看详细步骤. 操作方法 01 百度'百度网盘'找到官网点击进去 02 进去提示登录输入自己的百度账号-点击登录,如果提前登录则会跳过 ...