用Buffalo实现文件上传,request没有发现multipart/form-data

21 views
Skip to first unread message

acale...@gmail.com

unread,
Jul 11, 2008, 2:35:44 AM7/11/08
to buffalo与Amowa
使用APACHE的coomons-fileupload-1.2.1.jar及commons-io-1.4.jar实现文件上传,以下代码在
Servlet.doPost()中,工作正常,即实现了文件上传:
---------------------------------------------------------------------------------------------------------------------------
//上传组件
MutiFileUpload upload = new MutiFileUpload();
upload.parseRequest(request);
File parent = new File("C:\\upload\\");
try {
upload.upload(parent);
} catch
(org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException
e) {
// 文件大小超出最大值
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
---------------------------------------------------------------------------------------------------------------------------
把这段代码放在一个buffalo Service中的一个方法实现(此Service工作正常)baseService:
---------------------------------------------------------------------------------------------------------------------------
HttpServletRequest request =
RequestContext.getContext().getHttpRequest();
...
public int mutiFileUpload() throws UnsupportedEncodingException {
return baseDao.mutiFileUpload(request);
}
----------------------------------------------------------------------------------------------------------------------------
baseDao实现上传:
----------------------------------------------------------------------------------------------------------------------------
MutiFileUpload upload = new MutiFileUpload();
upload.parseRequest(request);
File parent = new File("C:\\upload\\");
try {
upload.upload(parent);
} catch
(org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException
e) {
// 文件大小超出最大值
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return 1;
----------------------------------------------------------------------------------------------------------------------------
系统抛出错误:
----------------------------------------------------------------------------------------------------------------------------
org.apache.commons.fileupload.FileUploadBase
$InvalidContentTypeException: the request doesn't contain a multipart/
form-data or multipart/mixed stream, content type header is text/
xml;charset=utf-8
at org.apache.commons.fileupload.FileUploadBase
$FileItemIteratorImpl.<init>(FileUploadBase.java:885)
at
org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:
331)
at
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:
349)
at
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:
126)
at 省略...upload.MutiFileUpload.parseRequest(MutiFileUpload.java:66)
at 省略...dao.BaseDao.mutiFileUpload(BaseDao.java:117)
at 省略...service.BaseService.mutiFileUpload(BaseService.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.buffalo.protocal.util.ClassUtil.invokeMethod(ClassUtil.java:
171)
at
net.buffalo.service.invoker.BuffaloInvoker.invoke0(BuffaloInvoker.java:
85)
at
net.buffalo.service.invoker.BuffaloInvoker.invoke(BuffaloInvoker.java:
60)
at
net.buffalo.service.BuffaloWorker.processRequest(BuffaloWorker.java:
64)
at
net.buffalo.web.servlet.ApplicationServlet.doRequest(ApplicationServlet.java:
119)
at
net.buffalo.web.servlet.ApplicationServlet.doPost(ApplicationServlet.java:
91)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
269)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
188)
at
com.easybea.core.servlet.EASYBEA_HibernateFilter.doFilter(EASYBEA_HibernateFilter.java:
54)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
215)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
188)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
174)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
117)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
108)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
151)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
874)
at org.apache.coyote.http11.Http11BaseProtocol
$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:
665)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:
528)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:
81)
at org.apache.tomcat.util.threads.ThreadPool
$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)

----------------------------------------------------------------------------------------------------------------------------

Michael Chen

unread,
Jul 11, 2008, 2:56:22 AM7/11/08
to am...@googlegroups.com
buffalo协议本身不支持文件上传。一般来说,采用传统方式来进行文件上传,采用buffalo来显示文件上传进度。

2008/7/11 acale...@gmail.com <acale...@gmail.com>:

--
Michael Chen
--------------------------------
Blog: http://michael.nona.name
MSN: jzch...@hotmail.com

acale...@gmail.com

unread,
Jul 11, 2008, 3:06:22 AM7/11/08
to buffalo与Amowa
将来是否会有新版本计划?或者说,在新版本中增加此功能。

On Jul 11, 2:35 pm, "acaleph2...@gmail.com" <acaleph2...@gmail.com>
wrote:

Michael Chen

unread,
Jul 11, 2008, 5:09:45 AM7/11/08
to am...@googlegroups.com
没有...

文件上传的需求千奇百怪。我目前所经历的Web项目中,几乎每个都有自己的特定需求。除了HTTP上传本身没什么变化,表现形式上,行为交互上各有不同。如果不能抽象出一致的行为,框架能做出的抽象也有限。

2008/7/11 acale...@gmail.com <acale...@gmail.com>:

--

acale...@gmail.com

unread,
Jul 11, 2008, 11:51:19 PM7/11/08
to buffalo与Amowa
上传文件用JAVA来实现,绘制进度条用buffalo取session中的参数对象的值,但这样一来,是用BUFFALO CALL 后台取得用
JAVA写入前台的对象,我感觉还不如用JAVA直接写COOKIE到前台,用JS直接取COOKIE中的参数来实现绘制进度条的任务,相比之下,哪种
方法性能更好一些呢?。

On Jul 11, 5:09 pm, "Michael Chen" <mechil...@gmail.com> wrote:
> 没有...
>
> 文件上传的需求千奇百怪。我目前所经历的Web项目中,几乎每个都有自己的特定需求。除了HTTP上传本身没什么变化,表现形式上,行为交互上各有不同。如果不能抽象出一致的行为,框架能做出的抽象也有限。
>
> 2008/7/11 acaleph2...@gmail.com <acaleph2...@gmail.com>:
> MSN: jzche...@hotmail.com

Michael Chen

unread,
Jul 12, 2008, 9:42:19 AM7/12/08
to am...@googlegroups.com
性能不会有太大的差异。

2008/7/12 acale...@gmail.com <acale...@gmail.com>:

MSN: jzch...@hotmail.com

acale...@gmail.com

unread,
Jul 13, 2008, 8:17:00 PM7/13/08
to buffalo与Amowa
COOKIE受浏览器的影响大一些,最后,我还是选择了BUFFALO结合COMMONS-FILEUPLOAD组件来完成状态条的绘制工作。看上去效
果还可以。

On Jul 12, 9:42 pm, "Michael Chen" <mechil...@gmail.com> wrote:
> 性能不会有太大的差异。
>
> 2008/7/12 acaleph2...@gmail.com <acaleph2...@gmail.com>:
> MSN: jzche...@hotmail.com

acale...@gmail.com

unread,
Jul 22, 2008, 8:29:02 PM7/22/08
to buffalo与Amowa
Buffalo 是否有计划配合Spring的 Annotation的Feature,做一次小版本的提升,实现自动注入啊?

On Jul 14, 8:17 am, "acaleph2...@gmail.com" <acaleph2...@gmail.com>
wrote:

Michael Chen

unread,
Jul 22, 2008, 10:02:09 PM7/22/08
to am...@googlegroups.com
具体看起来是什么样子呢?

以前有人写过,只需要在Service上写一个@BuffaloServer("serviceName")就可以让系统自动识别buffaloService.

2008/7/23 acale...@gmail.com <acale...@gmail.com>:

MSN: jzch...@hotmail.com

acale...@gmail.com

unread,
Jul 24, 2008, 7:50:57 PM7/24/08
to buffalo与Amowa
BUFFALO与SPRING集成,是否只支持:
org.springframework.web.context.ContextLoaderServlet?
目前用LISTENER配置的较多,优势也较大。我想,如果新版本(小版本)的BUFFALO增加这两项支持就好了,也比较有生命力,毕竟
ANNOTATION是J2EE 5 的重要特性:
1 支持LISTENER配置。
2 实现自去注入功能。

On Jul 23, 10:02 am, "Michael Chen" <mechil...@gmail.com> wrote:
> 具体看起来是什么样子呢?
>
> 以前有人写过,只需要在Service上写一个@BuffaloServer("serviceName")就可以让系统自动识别buffaloService.
>
> 2008/7/23 acaleph2...@gmail.com <acaleph2...@gmail.com>:
> MSN: jzche...@hotmail.com

Michael Chen

unread,
Jul 24, 2008, 9:56:59 PM7/24/08
to am...@googlegroups.com
Listener也可以支持。例子里面只是一种演示而已。只要保证在上下文环境中Spring被正确的加载,buffalo就能找到对应的service.

2008/7/25 acale...@gmail.com <acale...@gmail.com>:

MSN: jzch...@hotmail.com

Reply all
Reply to author
Forward
0 new messages