- 浏览: 585366 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
lihaiming:
受用了,已把定义的版本改为跟本地的一致,不用担心找不到了,现应 ...
Cannot find the declaration of element 'beans' -
Albert_Hawking:
看到这个帖子,解决了我的问题。 我的总结是这样的:由于mave ...
Cannot find the declaration of element 'beans' -
di1984HIT:
学习了啊,哈哈哈~~
win7下安装的sqlserver ,1433端口不通 -
蛋呢823:
我也碰到这个问题,尝试了你这个方法也不行,自己摸索了一天,终于 ...
was缓存导致web.xml更改无效 -
liuxiyangyang:
文章帮了我大忙了,谢谢
Cannot find the declaration of element 'beans'
转自:http://feng88724.iteye.com/blog/322731
commons fileupload 是Apache commons项目的一部分,FileUpload 使你很容易在servlet及web 应用中提供一个鲁棒的、高性能的文件上特性。FileUpload按照RFC 1867 ( "Form-based File Upload in HTML")处理HTTP请求。即,如果HTTP request 以 POST方法提交,并且content type 设置为"multipart/form-data",那么FileUpload可以处理该请求,在web应用中提供文件上载的功能。其使用方法见commons fileupload的相关文档。
在把FileUpload与struts结合(jsp + uploadactiono)使用过程中发现,如果在action mapping配置中不指定formbean,文件上传过程正常。如果指定了formbean,文件上传不正常,取不到文件。以下是几个文件片断:
- upload.jsp
- **form action="uploadaction.do?method=uploadByFileUpload" method="post" enctype="multipart/form-data" ** **input type="file" name="uploadfile"** **/form**UploadAction.java public ActionForward uploadByFileUpload(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ......
- String dir =
- request.getSession().getServletContext().getRealPath(
- "/");
- DiskFileUpload fu= new DiskFileUpload();
- fu.setSizeMax( UPLOAD_MAXSIZE);
- fu.setSizeThreshold( MAX_DATA_IN_MEM);
- fu.setRepositoryPath( System.getProperty("java.io.tmpdir"));
- try {
- List fileItem= fu.parseRequest( request);
- Iterator it= fileItem.iterator();
- while( it.hasNext()){
- FileItem item= (FileItem)it.next();
- if( !item.isFormField() && null!= item.getName() &&
- 0!= item.getName().trim().length()){
- String clientPath = item.getName();
- String fileName = new File(clientPath).getName();
- File destDir = new File( dir);
- File file = new File(destDir, fileName);
- item.write( file);
- map.put( item.getFieldName(),
- dir+ File.separator+ fileName);
- }
- }
- } catch (Exception e) {
- String str= "文件上载异常,错误信息:"+ e.getMessage();
- System.out.println(str);
- throw new Exception( str, e);
- }
- ......
- }
- struts-config.xml
- name="TestForm"
- type="UploadAction"
- parameter="method" >
现象:在struts-config.xml文件中,如果指定了formbean——name="TestForm" ,则文件无法正确上传,UploadAction中的fu.parseRequest( request)方法返回值为null;如果去掉了说明formbean的name属性,则文件可以正常上传。
原因:struts的RequestProccessor.process已经包含了处理文件上传的方法。如果在action配置中设置了formbean ,那么在你自己的action处理request之前,struts已经在RequestProccessor.populate方法中处理了request,因此,在自己的action中就取不到上传的文件了。
处理:如果要自己在action中处理文件上传工作,那么就不要在配置文件中配置formbean。
其他选择:如果仍需使用formbean,那么可以使用struts内置的文件上传功能。具体使用方法见struts的相关文档,以及struts的upload例子。以下是几个文件片断:
upload.jsp
基本同上,修改form标签的action属性
- UploadAction.java
- public ActionForward uploadByStruts(ActionMapping mapping,
- ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- ActionErrors errs= new ActionErrors();
- if (form != null){
- DynaActionForm theForm = (DynaActionForm)form;
- FormFile file = (FormFile)theForm.get("uploadfile");
- try{
- String fileName= file.getFileName();
- if ("".equals(fileName)) {return null;}
- InputStream stream = file.getInputStream();
- String dir =
- request.getSession().getServletContext().getRealPath(
- "/");
- OutputStream bos = new FileOutputStream(dir+"/"+fileName);
- int bytesRead = 0;
- byte[] buffer = new byte[8192];
- while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
- bos.write(buffer, 0, bytesRead);
- }
- bos.close();
- stream.close();
- }catch (FileNotFoundException fnfe) {
- ...
- }catch (IOException ioe) {
- ...
- }catch (NullPointerException e){
- ...
- }
- }else{
- ...
- }
- if (!errs.isEmpty()){
- saveErrors( request, errs);
- }
- return mapping.findForward( "success");
- }
- struts-config.xml
- **form-bean name="TestForm" type="org.apache.struts.action.DynaActionForm"**
- form-property name="uploadfile" type="org.apache.struts.upload.FormFile" /**
- /form-bean**
- **action path="/uploadaction"
- name="TestForm" **!--指定formbean--**
- type="UploadAction"
- parameter="method" **
- **forward name="success" path="/success.jsp" /**
- **/action**
- **controller maxFileSize="2M" /**
注意,使用struts自带的文件上传功能,最带文件尺寸限制用来配置。另为struts对文件上载功能提供了两种处理实现:org.apache.struts.upload.CommonsMultipartRequestHandler 和 org.apache.struts.upload.DiskMultipartRequestHandler。struts默认的是前者,如果要使用后者,需在中配置,配置样例如下。而且,DiskMultipartRequestHandler是使用commons uploadload实现的。
发表评论
-
【转】ECLIPSE @OVERRIDE报错解决 必须覆盖超类方法
2013-05-02 09:56 4119原文地址:http://justdo2008.javaeye ... -
IE iframe cookie问题(p3p)
2012-12-10 09:56 1710转自:http://my.oschina.net/he ... -
java对cookie的操作
2012-10-23 21:34 828java对cookie的操作比较简单,主要介绍下建立co ... -
jquery Ajax 跨域调用(jsonp)
2012-10-09 11:37 1183最近一直在做电子商务方面的项目,包括买家和卖家后台 分别在se ... -
FORM的ENCTYPE="multipart/form-data" 时request.getParameter()值为null问题
2012-08-22 16:55 3732转自:http://www.cnblogs.com/mo ... -
在jsp上显示pdf||网页直接打开PDF 在IE中显示pdf文档的方法及参数设置
2012-08-20 08:26 2672转自:http://lilinhui.iteye.com/bl ... -
ajax iframe 无刷新上传文件
2012-08-15 15:09 1517转自:http://gzcj.iteye.com/blo ... -
Apache Commons fileUpload实现文件上传
2012-08-15 15:08 1009转自:http://zhangjunhd.blog ... -
Jquery Jcrop 插件java的使用方法 包括图片保存类
2012-08-14 14:59 1401转自:http://mofan.iteye.com/blog/ ... -
url 传递参数(特殊字符)解决方法
2012-05-10 09:56 3996转自 http://lijackly.iteye.com/bl ... -
360浏览器下载小于1024的文件报错
2012-05-08 17:15 1713用java写的下载文件(部分代码)。 使用IE可以进行下载文件 ... -
apache 多路转发配置 (反向代理方法)
2012-02-23 15:50 3114打开apache安装目录的conf文件夹下的httpd. ... -
tuxedo执行tmloadcf问题解决
2012-02-21 15:17 1501转自 http://soft.zdnet.com.cn ... -
由12306.cn谈谈网站性能技术
2012-01-18 10:26 1079转自http://coolshell.cn/articles/ ... -
IE访问HTTPS链接下载文件,IE提示无法下载
2011-12-30 16:55 6853原因: (1) 在IE6/7下,使用HTTPS下载/打开文件时 ... -
log4j详解与实战
2011-11-01 15:45 1178转自:http://www.iteye.com/t ... -
session原理
2011-10-22 08:58 1391转http://blog.csdn.net/wangzhkai ... -
Apache HTTP Server
2011-10-22 08:22 1810Apache HTTP Server 一、什么 ... -
高性能服务器架构(High-Performance Server Architecture)
2011-07-27 14:49 1351High-Performance Server Archite ... -
批处理:将目录下所有的jar文件都加到CLASSPATH
2011-07-20 13:46 1844转自 代码如下: @echo off SetLocal E ...
相关推荐
#### 二、常见的Java文件上传组件及其特点 1. **Smartupload**: - **优点**:出现较早,有一定的社区支持。 - **缺点**:不再更新新版本;支持的最大文件大小有限(约100MB),无法满足部分高需求场景。 2. **...
Java 文件上传下载 Java 文件上传下载是 Web 应用中非常常见的一种功能,特别是在 JSP 环境中实现文件上传功能非常容易。 Apache 的 Commons FileUpload 组件是实现文件上传功能的一种流行的选择。本文将详细介绍...
Java多文件上传主要涉及Apache Commons FileUpload组件的使用,特别是`DiskFileUpload`类的高级应用。 #### 二、核心概念与组件 1. **Apache Commons FileUpload**: 是一个开源库,用于处理HTTP文件上传。它提供了...
在Java Web开发中,文件上传和下载是常见的需求。...以上就是使用Java和Apache Commons FileUpload组件实现文件上传的基础知识。在实际应用中,还需要考虑性能优化、错误处理和用户体验等方面的细节。
【Java 文件上传下载详解】 在 Web 应用中,文件上传和下载是常见的功能,尤其在用户需要提交图片、文档等资料时。Java 提供了多种实现方式来处理这些需求,其中一种常用的方法是利用 Apache Commons FileUpload ...
### Java文件上传下载实例详解 #### 一、引言 在现代Web开发中,文件的上传与下载是一项基本且常用的功能。特别是在Java Web应用程序中,实现这一功能有多种方式,其中使用Apache Commons FileUpload组件是一种非常...
在JSP环境下实现文件上传相对容易,主要是因为有许多现成的Java文件上传组件可供选择。本篇文章将重点介绍如何利用Apache Commons FileUpload组件为JSP应用增加文件上传的功能。 #### 二、Commons FileUpload简介 ...
`DiskFileUpload` 类提供的这些方法确保了文件上传过程的可控性,避免了内存溢出和安全性问题。此外,正确设置字符编码可以确保不同语言环境下数据的准确传输。通过 `parseRequest` 解析的 `FileItem` 对象可以...
【Java文件上传下载详解】 在Java Web开发中,文件上传和下载是常见的需求,尤其是在用户交互界面中。Apache Commons FileUpload库提供了一种方便的方式来处理HTTP请求中的多部分数据,如文件上传。以下是对Java...
### Common-fileupload组件实现文件上传 #### 一、概述 在现代Web开发中,文件上传是一项常见的需求。尤其是在Java Web应用程序中,实现文件上传功能变得越来越简单,这得益于丰富的开源库支持。Common-fileupload...
在描述中提到,虽然Java Web标准如Servlets、JSP和JSF本身不直接支持文件上传功能,但可以通过第三方库如Apache Commons File Upload和Apache MyFaces等来实现。 Apache Commons File Upload是一个非常流行的Java库...
下面我们将详细介绍如何使用Java和Commons FileUpload组件来实现文件上传和下载。 **1. 文件上传** 首先,你需要从Apache官方网站(http://jakarta.apache.org/commons/fileupload/)下载并安装Commons FileUpload...
在Java开发中,上传图片是一个...总的来说,Java中处理图片上传涉及多个组件和技术,包括Servlet、JSP、Apache Commons库以及合理的文件管理和安全性策略。通过这样的方式,我们可以构建一个安全且高效的图片上传系统。
本篇文章将通过一个具体的Java Servlet示例来详细介绍文件上传的实现过程。 #### 二、文件上传的关键技术 文件上传主要涉及以下关键技术: 1. **Apache Commons FileUpload 库**:这是一个用于解析HTTP请求中文件...
Apache Commons FileUpload库是Struts实现文件上传功能的核心组件。 首先,`DiskFileUpload`类是Apache Commons FileUpload库的主要类,它负责处理文件上传过程中的各种操作。通过这个类,开发者可以控制上传文件的...
【Apache Commons FileUpload组件使用详解】 ...通过以上步骤,你可以成功地使用Apache Commons FileUpload组件在Java Web应用中实现文件上传功能。记得在实际项目中,根据具体需求进行相应的调整和优化。
`DiskFileUpload`类是该库提供的一个组件,用于处理文件上传请求。 - `setSizeMax()`设置允许的最大文件大小,`setSizeThreshold()`设置内存缓冲区的大小,超过这个大小的文件将被写入临时文件。 - `...