`
JaNer
  • 浏览: 45063 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

COS文件上传组件在Struts1.X环境下的问题[SOS]

阅读更多
[SOS]紧急救援
问题是这样的:
我使用文件上传组件COS进行文件的上传操作,按照COS的例子,我也成功的做了一个Demo,但这个Demo是这样的.有两个JSP文件:
a.jsp(用于生成上传界面)
upload.jsp(内嵌了javaCode实现文件上传操作)
我想对他进行点改进,就是说:我实现文件上传的代码我想写在StrutsAction中,而不是嵌在一个JSP里面.具体我是怎么写的,请看下面的代码:
a.jsp的代码如下:
<!-- 测试集成COS文件上传效果 -->
<%@ page contentType="text/html; charset=GBK"%>
<html>
	<body>
		<form name="form1" method="post" enctype="multipart/form-data"
			action="upload.jsp">
			<input name="file1" type="file"><br>
			<input name="file2" type="file"><br>
			<input name="file3" type="file"><br>
			<input type="submit" name="Submit"  value="上传">
		</form>
	</body>
</html>


upload.jsp的代码如下:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.util.Enumeration"%>
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="java.io.File" %>
<html>
  <head>
  </head>
  <body>
    <%
    String saveDirectory = "c:\\upload";
    //每个文件最大5m,最多3个文件    
    int maxPostSize = 3 * 5 * 1024 * 1024;
    //response的编码为"gb2312",同时采用缺省的文件名冲突解决策略,实现上传   
    MultipartRequest multi = new MultipartRequest(request,saveDirectory, 
        maxPostSize, "gb2312");
    //输出反馈信息   
    Enumeration file = multi.getFileNames();
    while (file.hasMoreElements()) {
    	String name = (String) file.nextElement();
    	File f = multi.getFile(name);
    	if (f != null) {
    		String fileName = multi.getFilesystemName(name);
    		String lastFileName = saveDirectory + "\\" + fileName;
    		out.println("文件已经上传到:" + lastFileName);
    		out.println("<br>");
    		}
    	}
    %>
  </body>
</html>

通过上面的两个JSP文件,我成功的完成了我的上传操作!
但是,我把它移植到Struts的Action中就报错了。请继续往下看:
a-1.jsp的代码如下:
<!-- 测试集成COS文件上传效果 -->
<%@ page contentType="text/html; charset=GBK"%>
<html>
	<body>
		<form name="form1" method="post" enctype="multipart/form-data"
			action="/uploadAction.do">
			<input name="file1" type="file"><br>
			<input name="file2" type="file"><br>
			<input name="file3" type="file"><br>
			<input type="submit" name="Submit"  value="上传">
		</form>
	</body>
</html>


UploadActionForm.java的代码如下:
public class UploadActionForm extends ActionForm {
	private FormFile file1 = null;
	private FormFile file2 = null;
	private FormFile file3 = null;
         ........
         ........//省略


UploadAction的代码如下:
public class UploadAction extends Action {
	/**
	 * @name execute
	 * @title 测试文件上传组件COS集成效果
	 * @param ActionMapping,ActionForm,HttpServletRequest,HttpServletResponse
	 * @return ActionForward
	 * @description
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form,
		HttpServletRequest request, HttpServletResponse response)
			throws Exception {
	    String saveDirectory = "c:\\upload";
	    //每个文件最大5m,最多3个文件    
	    int maxPostSize = 3 * 5 * 1024 * 1024;
	    //response的编码为"gb2312",同时采用缺省的文件名冲突解决策略,实现上传   
	    MultipartRequest multi = new MultipartRequest(request,saveDirectory, 
	        maxPostSize, "gb2312");
	    //输出反馈信息   
	    Enumeration file = multi.getFileNames();
	    while (file.hasMoreElements()) {
	    	String name = (String) file.nextElement();
	    	File f = multi.getFile(name);
	    	if (f != null) {
	    		String fileName = multi.getFilesystemName(name);
	    		String lastFileName = saveDirectory + "\\" + fileName;
			response.getWriter().println("文件被上传到:" + lastFileName);
			response.getWriter().println("<br>");
	    		}
	    	}
		return mapping.findForward("jspView");
	}
}


我请求这个页面的时候,控制台报出如下错误信息:
2007-11-02 01:45:54,750 DEBUG [http-8082-Processor23] - Executing org.apache.struts.chain.commands.servlet.ExceptionHandler
2007-11-02 01:45:54,750 DEBUG [http-8082-Processor23] - See if actionConfig ActionConfig[cancellable=falsepath=/test_4Actionvalidate=false,input=jspView,name=test_4ActionForm,scope=request,type=com.eredlab.eredcip.test.web.action.Test_4Action has an exceptionConfig for java.io.IOException
2007-11-02 01:45:54,750 DEBUG [http-8082-Processor23] - findException: look locally for java.io.IOException
2007-11-02 01:45:54,750 DEBUG [http-8082-Processor23] - findException: look globally for java.io.IOException
2007-11-02 01:45:54,750 DEBUG [http-8082-Processor23] - findException: look locally for java.lang.Exception
2007-11-02 01:45:54,750 DEBUG [http-8082-Processor23] - findException: look globally for java.lang.Exception
2007-11-02 01:45:54,750 DEBUG [http-8082-Processor23] - findException: look locally for java.lang.Throwable
2007-11-02 01:45:54,750 DEBUG [http-8082-Processor23] - findException: look globally for java.lang.Throwable
2007-11-02 01:45:54,750 DEBUG [http-8082-Processor23] - findException: look locally for java.lang.Object
2007-11-02 01:45:54,750 DEBUG [http-8082-Processor23] - findException: look globally for java.lang.Object
2007-11-02 01:45:54,750  WARN [http-8082-Processor23] - Unhandled exception
java.io.IOException: Posted content type isn't multipart/form-data
	at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:166)
	at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:222)
	at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:173)
	at com.eredlab.eredcip.test.web.action.Test_4Action.execute(Test_4Action.java:39)
	at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:53)
	at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:64)
	at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)


不知如何解决,请指教,
鞠躬!
  • cos.zip (363.7 KB)
  • 描述: 上传组件COS的jar包,API文档和示例程序都在里面,供参考!
  • 下载次数: 264
分享到:
评论
7 楼 menghuannvxia 2014-08-22  
请问request不同解决了吗?我现在将它的requst转成了org.apache.catalina.connector.RequestFacade这个,还是报同样的错,怎么回事呢
6 楼 yinsuxiaokucha 2008-09-24  
cos 对大文件的处理 要比其他组件强的多~~~ 有没有办法把struts中得到servlet的request呢?
5 楼 hantsy 2007-11-29  

在struts程序中,内置的fileupload方式比使用cos要好用得多。
4 楼 JaNer 2007-11-17  
的确是由于JSP/servlet的Request和Sturts的Request的不同造成的。Struts对Request对象好像进行了包装!这个问题就暂时搁下了,有时间再解决。偶先用Servlet用着!
3 楼 JaNer 2007-11-02  
结测试,COS性能是最优的,而且支持文件自定义重命名!
2 楼 xiaoxiaodi5834 2007-11-02  
为什么要用这个?
直接用org.apache.struts.upload包不是更方便,呵
1 楼 williamy 2007-11-02  
jsp和struts的request是不同的

相关推荐

    cos.jar文件下载,cos.jar下载。

    " 指的是腾讯云对象存储服务(Cloud Object Storage,简称COS)的Java SDK,它是一个关键的开发组件,主要用于Java开发者在应用程序中实现对腾讯云COS的文件上传、下载等操作。这个jar包包含了必要的类和方法,使得...

    基于java的开发源码-文件上传组件 COS.zip

    基于java的开发源码-文件上传组件 COS.zip 基于java的开发源码-文件上传组件 COS.zip 基于java的开发源码-文件上传组件 COS.zip 基于java的开发源码-文件上传组件 COS.zip 基于java的开发源码-文件上传组件 COS.zip ...

    struts.xml文件详解.doc

    Struts.xml文件是Apache Struts 2框架的核心配置文件,它用于定义应用程序的行为、Action映射、结果页面、拦截器等关键组件。在深入讲解struts.xml之前,我们先来了解与之相关的struts.properties文件。 struts....

    JAVA COS上传实例支持Struts2

    COS这个文件上传组件可以说在几个开源的上传文件组件中性能是非常优秀的,上传速度很快(相比fileUpload,smart等组件),但在使用Struts2结合COS文件上传时要注意Struts2实现了自己的MultiPartRequest,这个过滤后的...

    Struts 2 properties文件详解

    这些属性决定了Struts 2的行为特征以及与其他组件如Spring、文件上传组件等的集成方式。下面将详细介绍`struts.properties`文件中可以定义的关键配置项。 #### struts.configuration **描述**: 此属性用于指定加载...

    struts.properties详解

    - **struts.multipart.saveDir**:指定上传文件的临时存储目录,默认为`javax.servlet.context.tempdir`,即Web容器提供的临时目录。 - **struts.multipart.maxSize**:指定整个上传请求的最大大小,超过这个限制将...

    文件上传需要cos组件:cos-26Dec2008.jar

    在JFinal中处理文件上传时,可能会遇到需要特定组件的情况,比如标题中提到的"cos-26Dec2008.jar"。这个组件是腾讯云的对象存储服务(Cloud Object Storage,简称COS)的Java SDK,用于帮助开发者方便地与COS进行...

    JSP+Servlet+cos文件上传下载Jar包.rar

    1. **cos.jar**:这是China Online System(COS)的Java库,主要用于文件上传和下载操作。COS提供了一套简单易用的API,使得开发者能够方便地处理文件流,从而实现在服务器上存储、读取和传输文件。COS库支持断点续...

    struts.properties文件详解

    这个文件主要用于定制 Struts2 的工作环境,包括配置管理器、国际化、对象工厂、文件上传、请求映射等多个方面。下面将详细解释文件中的各项属性及其作用。 1. `struts.configuration`: 这个属性定义了 Struts2 ...

    详解struts2中struts.properties.doc

    7. `struts.multipart.parser`: 设定处理文件上传请求的解析器,可以选择`cos`、`pell`或`jakarta`,默认是`jakarta`,对应Apache Commons FileUpload。 8. `struts.multipart.saveDir`: 指定上传文件临时存储的...

    基于Java的文件上传组件 COS.zip

    【标题】基于Java的文件上传组件COS.zip 在Java开发中,文件上传是一项常见的功能,尤其是在构建Web应用时。COS(Cloud Object Storage)通常指的是云存储服务,如腾讯云的对象存储服务,它提供了安全、高可用的...

    Struts2的常量详解

    struts.multipart.parser 属性指定处理 multipart/form-data 的 MIME 类型(文件上传)请求的框架,该属性支持 cos、pell 和 jakarta 等属性值,即分别对应使用 cos 的文件上传框架、pell 上传及 common-fileupload ...

    Struts2属性文件详解

    该属性设定了Struts 2文件上传中整个请求内容的最大字节数限制,以防止过大的文件上传导致的问题。 #### struts.custom.properties 指定了Struts 2应用加载的用户自定义属性文件,自定义属性文件中的设置不会覆盖`...

    Java文件上传组件 COS.7z

    9. **监控和日志**:在生产环境中,应启用COS SDK的日志记录,以便追踪和分析上传过程中的问题。同时,可以集成腾讯云的监控服务,实时监控上传操作的性能和异常情况。 10. **最佳实践**:始终确保文件上传过程的...

    基于java的文件上传组件 COS.zip

    【标题】"基于Java的文件上传组件COS.zip"指的是一个使用Java语言开发的文件上传组件,该组件可能被设计用于将用户端的文件上传到特定的存储服务,如腾讯云对象存储(COS,Cloud Object Storage)。这个组件可能是...

    自制jquery+SWFUpload+COS 多文件上传组件

    在压缩包中的“jquery+SWFUpload+COS上传组件的使用”文件,可能包含示例代码、配置文件、样式表和文档,帮助开发者了解如何安装和使用这个组件。通过研究这些文件,开发者可以快速理解和集成这个多文件上传功能到...

    Java文件上传组件 COS

    Java文件上传组件COS,全称为Cloud Object Storage,是由腾讯云提供的一种云存储服务,它支持高可用、高并发的文件存储与访问。在Java开发中,COS提供了丰富的SDK和API,使得开发者能够轻松地将应用程序与云端存储...

    文件上传组件的比较

    SmartUpload组件,尽管在小文件上传上表现尚可,但在处理大文件时表现出严重的性能问题,可能是因为其内存管理策略或内部实现细节不适用于高负载环境。在实际项目中,如果预期的文件大小普遍较大,应谨慎考虑使用...

    java源码:Java文件上传组件 COS.zip

    【标签】"java 源码 经典" 暗示了这个组件是用Java编程语言编写的,并且它的源代码可供学习和参考,可能被广泛使用或被认为在文件上传领域具有一定的经典价值。Java是一种广泛应用于服务器端开发的语言,其稳定性和...

    struts2核心配置文件

    在Struts2框架中,有两个核心配置文件特别重要:`struts.xml` 和 `struts.properties`。这两个文件共同决定了Struts2框架的行为特征和应用的运行逻辑。 #### 二、struts.xml 文件详解 `struts.xml` 文件是Struts2的...

Global site tag (gtag.js) - Google Analytics