论坛首页 Java版 Webwork

用webwork的fileUploadInterceptor上传文件的问题

浏览 4136 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2005-07-11
依照webwork的文档,写了一个简单的文件上传的例子,发现了一个奇怪的问题。当上传一个文件时,一切正常。然而当同时上传多个文件时,却发现只有第一个文件能够正确上传,而其它的文件被忽略了,服务器根本没有接收。

文件上传用的是pell,多文件上传时,在Action中用File[]来接收,却发现File[]的长度永远是1。

于是我将webwork源码中自带的webwork-example部署到tomcat下,运行fileupload的例子,发现log4j在控制台上同样只打出一个文件信息。

有这方面经验的朋友介绍一下好吗?
   
最后更新时间:2005-07-12
多文件上传??

记不清楚webwork的cos支持不支持了(似乎是不支持),但是默认的pell肯定是不支持的。多文件上传建议用jakarta。


#webwork.multipart.parser=cos
#webwork.multipart.parser=jakarta
webwork.multipart.parser=pell
   
0 请登录后投票
最后更新时间:2005-07-12
尝试了一下更换webwork.multipart.parser,cos,pell,jakarta都试了一下,似乎只有jakarta支持多文件上传,郁闷!
   
0 请登录后投票
最后更新时间:2005-07-12
的确如此,jakarta才支持多文件上传。

另外,好象cos、pell不能处理null(也就你不上传文件)。
   
0 请登录后投票
最后更新时间:2005-07-13
webwork.multipart.parser=com.opensymphony.webwork.dispatcher.multipart.JakartaMultiPartRequest
   
0 请登录后投票
最后更新时间:2005-07-30
jakarta 不能传来原始文件的名称?
   
0 请登录后投票
最后更新时间:2005-08-03
tiyi 写道
jakarta 不能传来原始文件的名称?


可以啊

我使用webwork 2.1.7

webwork.properties相关配置如下:
[code:1]
webwork.locale=zh_CN

webwork.multipart.parser=jakarta

webwork.i18n.encoding = GBK

[/code:1]

action如下:

[code:1]
public class FileUploadAction extends ActionSupport
{

    private String name;

    File file;

    String fileContentType;

    String fileFileName;

    public String execute() throws Exception
    {

        //以下为保存文件,视情况修改
        if(null!=file)
        {
            FileOutputStream outputStream = new FileOutputStream("d:/temp/demo_" + fileFileName);

            FileInputStream fileIn = new FileInputStream(file);

            byte[] buffer = new byte[1024];

            int len;
            while ((len = fileIn.read(buffer)) > 0)
            {
                outputStream.write(buffer, 0, len);
            }
           
            fileIn.close();
            outputStream.close();
           
        }
       

        return SUCCESS;
    }

[/code:1]

页面如下:

[code:1]
<%@ page contentType="text/html; CHARSET=utf8" %>
<%@ taglib uri="webwork" prefix="ww" %>
<html>
<head>
<title>My JSF 'fileupload.jsp' starting page</title>
</head>
 
<body>

<ww:form name="'test'" method="'post'" enctype="'multipart/form-data'" >
<ww:textarea name="'name'" label="'Name'" />
    <ww:file label="'File'" name="'file'"  />
    <ww:submit value="'Upload'"/>
</ww:form>

filename: <ww:property value="fileFileName"/><br>
name: <ww:property value="name"/>
</body>
</html>
[/code:1]

xwork.xml配置如下:
[code:1]
    <action name="fileupload" class="test.FileUploadAction">
    <interceptor-ref name="fileUploadStack"></interceptor-ref>
    <result name="success" type="dispatcher">
<param name="location">/fileupload.jsp</param>
</result>   
    </action>

[/code:1]

没有其他特殊的配置

另:多个文件也没有问题
   
0 请登录后投票
最后更新时间:2005-08-14
fileUploadInterceptor好像是有bug的哦
   
0 请登录后投票
最后更新时间:2005-08-15
mmwy 写道
的确如此,jakarta才支持多文件上传。

另外,好象cos、pell不能处理null(也就你不上传文件)。


pell我没有试过,但cos肯定是能处理null的,只不过文件序列不会按照客户端的表单对象的排序而排列,记得当时我好像还给改了一下源代码,以便能获得文件正确的顺序。
   
0 请登录后投票
最后更新时间:2005-08-30
哦,必须要声明一个fileName属性啊.令我想起了php
   
0 请登录后投票
论坛首页 Java版 Webwork

跳转论坛:
JavaEye推荐