当前位置: 代码迷 >> Web前端 >> WebWork文件下传的有关问题-Content-Type not allowed
  详细解决方案

WebWork文件下传的有关问题-Content-Type not allowed

热度:205   发布时间:2012-10-29 10:03:53.0
WebWork文件上传的问题---Content-Type not allowed

今天原本想完成一个webwork实现文件上传的功能,原来的实现很是复杂,另外弹出一个页面,使用apache――upload组件将要上传的图片先提交到服务器,然后这个jsp的页面返回该文件的服务器的路径,提交表单接受这个这个参数,然后提交信息。
现在看这种实现过于复杂,因为种种原因一直没有修改,现在终于提出要修改这个上传实现。
webwork的拦截器实现了文件的上传,这样的例子也很多,很快按照一个例子,在一个测试web程序中部署,顺利通过。
但在应用到现在的网站时候,却出现了一个这样的问题,上传文件被拦截中断执行,报错的异常信息是Content-Type not allowed,无论上传什么类型文件都是这个异常。
下面是全部的代码,这已经是最简单的实现了,但这个测试例子在单独的环境中运行正常,一旦部署到现在的web应用程序中就无法正常运行,查找了很多资料,也专门加了一段content allowed types配置,还是无法正常运行。

两个环境唯一的区别是一个是webwork的2.2.4的版本,一个是webwork2.2的测试版本,由于程序已经很到,很难全部迁移到webwork2.2.4版本上,请教一下,这个bug是不是webwork测试版本的?如果是,除了升级webwork版本外,还有什么办法?如果不是,是不是我的程序写法的原因,在webwork的测试版本是不是有特殊的一些配置和写法?请各位大侠不吝赐教!

?

页面代码:

?

<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib prefix="ww" uri="webwork"%>

<html>
 <head>
   <title>文件上传</title>
 </head>
 <body>
  <form method="POST" name="form1" ENCTYPE="multipart/form-data">
  <table width="95%" border="0" cellpadding="5" cellspacing="0">
    <tr>
       <td>产品图片:</td>
       <td align="left" class="xxbg" colspan="2">
          <input type="file" name="pic" size="20">
      </td>
    </tr>
  </table>
  </form>
 </body>
</html>
<SCRIPT LANGUAGE="JavaScript">
function sub(){	
  form1.action = "uploadtest.action";
 form1.submit();}
</SCRIPT>

?

配置文件:

?

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.1.dtd">

<xwork>
	<include file="webwork-default.xml" />
	<package name="uploadtest" extends="webwork-default">
		<action name="uploadtest"
			class="com.shouzhong.test.UplaodAction" method="uploadtest">
			<result name="success" type="dispatcher">
				<param name="location">
					/result.jsp
				</param>
			</result>
			<interceptor-ref   name= "fileUpload "/> 
            <interceptor-ref   name= "basicStack "/> 
		</action>			
	</package>

</xwork>

?

?

类文件:

?

package com.shouzhong.test;

import java.util.*;

import org.apache.commons.logging.*;

import com.opensymphony.xwork.*;
import com.core.web.Action;
import com.shouzhong.map.*;
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.webwork.ServletActionContext;
import javax.servlet.http.HttpSession;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * <p>
 * Title:
 * </p>
 * <p>
 * Description:
 * </p>
 * <p>
 * Copyright: Copyright (c) 2007
 * </p>
 * <p>
 * Company:
 * </p>
 *
 * @author liuwei
 * @version 1.0
 */
public class UplaodAction
        extends Action {

    public static Log log = LogFactory.getLog(UplaodAction.class);
    private File pic;
    private String picContentType;
    private String picFileName;

    public String uploadtest() throws Exception {
        try {
            System.out.println("in....................");

            upload(pic, picFileName);
        } catch (Exception e) {

        }
        return SUCCESS;
    }

    public static String upload(File file, String filename) {
        String ret = null;
        try {
            if (file != null) {
                ret = "c:/" + filename;
                FileOutputStream outputStream = new FileOutputStream(ret);
                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();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            ret = null;
        }
        return ret;
    }

    public File getPic() {
        return pic;
    }

    public void setPic(File pic) {
        this.pic = pic;
    }

    public String getPicContentType() {
        return picContentType;
    }

    public void setPicContentType(String picContentType) {
        this.picContentType = picContentType;
    }

    public String getPicFileName() {
        return picFileName;
    }

    public void setPicFileName(String picFileName) {
        this.picFileName = picFileName;
    }
}

?

?

?

1 楼 limaoyuan 2008-06-07  
我也遇到了楼主的问题
2 楼 liuwei1981 2008-06-09  
我的问题是用了webwork的测试版本,使用了正式的版本,就没问题了
  相关解决方案