`
xifangyuhui
  • 浏览: 188978 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts 2.3.4 文件上传,FileName,ContentType和File全为NULL,咋整

阅读更多
刚开始学Struts2,下午参照黑弓老师的视频写一个简单的文件上传模块,结果弄了一下午,File,FileName和ContentType全为null,实在搞不懂了,大家帮我看看,谢谢了!!
先贴代码:
Fileupload.jsp代码

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@taglib prefix="s" uri="/struts-tags" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title><s:text name="loginPage" /></title> 
</head> 
<body> 
    <s:form action="fileUpload" method="post" enctype="multipart/form-data"> 
        选择文件: 
        <s:file name="upload"></s:file> 
        <s:submit></s:submit> 
    </s:form> 
</body> 
</html> 

----------------------------
Uploadaction.java代码

public class UploadAction extends ActionSupport { 
 
    private File upload; 
    private String uploadContentType; 
    private String uploadFileName; 
 
    public File getUpload() { 
        return upload; 
    } 
 
    public void setUpload(File upload) { 
        this.upload = upload; 
    } 
 
    public String getUploadContentType() { 
        return uploadContentType; 
    } 
 
    public void setUploadContentType(String uploadContentType) { 
        this.uploadContentType = uploadContentType; 
    } 
 
    public String getUploadFileName() { 
        return uploadFileName; 
    } 
 
 
    public void setUploadFileName(String uploadFileName) { 
        this.uploadFileName = uploadFileName; 
    } 
 
    public String execute() throws Exception { 
        System.out.println(uploadContentType + " : " + uploadFileName + "\n"); 
        FileInputStream fis = new FileInputStream(upload); 
        FileOutputStream fos = new FileOutputStream("D:/" + uploadFileName); 
        byte[] buffer = new byte[1024]; 
        int length = 0; 
        while((length = fis.read(buffer)) != -1) { 
            fos.write(buffer, 0, length); 
        } 
        fis.close(); 
        fos.close(); 
        return null; 
    } 


------------------------
Struts.xml代码

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 
    "struts-2.3.dtd"> 
<struts> 
    <constant name="struts.devMode" value="true"></constant> 
    <constant name="struts.configuration.xml.reload" value="true"></constant> 
    <constant name="struts.custom.i18n.resources" value="mess"></constant> 
    <constant name="struts.i18n.encoding" value="UTF-8"></constant> 
    <constant name="struts.multipart.saveDir" value="/tmp"></constant> 
 
    <package name="lee" extends="struts-default"> 
        <action name="fileUpload" class="com.tt.www.action.UploadAction"> 
            <result name="input">/fileUpload.jsp</result> 
        </action> 
        <action name="login" class="com.tt.www.action.LoginAction"> 
            <result name="input">/login.jsp</result> 
            <result name="success">/success.jsp</result> 
            <result name="error">/error.jsp</result> 
        </action> 
    </package> 
</struts> 

----------------------
导入的Jar包有:




-----------------------
错误提示为:
Struts Problem Report

Struts has detected an unhandled exception:

Messages:
File: java/io/FileInputStream.java
Line number: 103
Stacktraces

java.lang.NullPointerException
    java.io.FileInputStream.(FileInputStream.java:103)
    com.abchina.www.action.UploadAction.execute(UploadAction.java:19)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:320)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
    java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    java.lang.Thread.run(Thread.java:619)
  • 大小: 30 KB
分享到:
评论

相关推荐

    struts2 文件上传中 ContentType对应表

    ### Struts2 文件上传中 ContentType对应表解析 在Struts2框架中,处理文件上传时,需要正确识别文件类型并设定对应的MIME类型(ContentType),这对于确保文件被正确解析至关重要。下面将详细介绍部分常见的文件...

    struts多文件上传

    在Struts1.2版本中,实现多文件上传是一项常见的需求,它允许用户在一次提交中上传多个文件,这对于数据交互、资源分享等场景非常实用。在本教程中,我们将深入探讨如何在Struts1.2中实现这一功能。 首先,理解多...

    struts 文件上传 Struts实现文件上传

    在Struts配置文件(struts-config.xml)中,你需要添加`multipart-config`元素到`&lt;form-beans&gt;`部分,指定文件上传的临时存储路径和最大大小限制: ```xml &lt;form-property name="file" type="org.apache.struts....

    struts文件上传和下载

    在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户通过表单提交的文件,或者允许用户从服务器下载文件。这些功能极大地增强了Web应用的交互性和实用性。 在Struts2中实现文件上传,主要涉及到以下几...

    struts 单文件上传和多文件上传带进度条

    在Struts中,可以实现单文件和多文件的上传,并且为了提升用户体验,我们还可以添加进度条来显示文件上传的状态。本文将详细介绍如何在Struts中实现这两个功能,并带上传进度条。 首先,我们需要了解Struts中处理...

    struts2.1.3上传文件

    Struts2会自动将文件内容封装到`Action`的`File`属性中,同时,文件的基本信息(如原始名称、大小等)会存储在`String`类型的`FileName`和`contentType`属性中。以下是一个简单的Action示例: ```java public class...

    Struts1实现的文件上传

    在这个“Struts1实现的文件上传”项目中,我们将深入探讨如何在Struts1框架下实现文件上传功能,并不涉及文件下载的部分。 首先,理解文件上传的基本流程是至关重要的。在Web应用中,用户通过HTML表单选择本地文件...

    在Struts 2中实现文件上传

    这些属性包括 `File` 类型的属性(如 `myFile`),用于存储上传文件的临时路径,以及与文件相关的其他属性,如 `contentType` 和 `fileName`。 ```java package tutorial; import java.io.*; import org.apache....

    Struts的文件下载

    这段代码通过Struts标签创建了一个链接,将文件路径和文件名作为参数传递给Action。 在实际项目中,我们可能需要考虑更多细节,比如文件权限检查、大文件分块下载、下载进度显示等。通过Struts提供的组件和API,...

    Struts2文件上传详解

    在上述代码中,`file`字段用于存储上传的文件,`fileName`和`contentType`分别表示文件名和内容类型,它们是通过Struts2的拦截器自动填充的。 接着,我们来看一下Struts2配置文件`struts.xml`中关于文件上传的相关...

    struts2文件上传

    下面我们将详细探讨Struts2文件上传的关键技术点、配置和实现步骤。 首先,我们来看上传文件的前端页面,也就是`upload.jsp`。在这个页面中,使用了Struts2的`&lt;s:form&gt;`标签来创建一个POST请求的表单,设置了`...

    struts1的文件上传

    Struts1是一个经典的Java Web框架,它在处理用户请求和业务逻辑方面表现出色,尤其是在文件上传功能上。本文将深入探讨Struts1中的文件上传,包括单文件上传、多文件上传,以及解决文件名乱码和重名冲突等问题。 1....

    Struts2文件上传与下载

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...

    Struts2 上传文件(带过滤文件类型和大小)

    接着,创建一个Action类,包含一个`java.io.File`或`org.apache.struts2.dispatcher.multipart.FileItem`类型的属性,Struts2会自动将上传的文件绑定到这些属性上。例如: ```java public class FileUploadAction {...

    struts 2文件上传

    在Struts 2中,文件上传功能是通过使用Struts 2的插件机制来实现的,这使得开发者能够方便地处理用户上传的文件。下面将详细讨论Struts 2文件上传的相关知识点。 ### 1. Struts 2文件上传原理 文件上传是基于HTTP...

    Struts文件的上传和下载

    在Struts框架中,文件的上传和下载是常见的功能需求,用于实现用户交互,如上传图片、文档等,或者提供资源的下载服务。下面将详细探讨Struts中文件上传和下载的实现机制。 一、文件上传 1. 配置文件:在Struts2中...

    Struts框架文件上传下载案例

    在这个“Struts框架文件上传下载案例”中,我们将探讨如何在Struts2框架下实现文件的上传和下载功能,这对于Web应用来说是非常常见的需求。 文件上传功能是Web应用中允许用户从本地计算机选择文件并将其传输到...

    struts2实现的文件上传(带文件类型和大小大小验证的)

    在这个"struts2实现的文件上传(带文件类型和大小验证的)"示例中,我们将深入探讨如何在Struts2中实现这一功能。 首先,我们需要在Struts2的配置文件(struts.xml)中添加一个或多个action配置,用于处理文件上传...

    Struts2框架实现文件上传

    `File`对象用于存储上传的文件内容,`fileName`和`contentType`分别存储文件名和类型。 4. **表单HTML**: 在JSP或HTML页面中创建一个`&lt;form&gt;`标签,设置`enctype`为`multipart/form-data`,并使用`&lt;s:file&gt;`标签...

    struts2文件上传和下载

    文件上传和下载是Web应用中常见的功能,而Struts2提供了方便的支持来实现这些功能。在这个主题中,我们将深入探讨Struts2中如何处理文件上传和下载。 **一、文件上传** 1. **配置Action支持文件上传** 在Struts2...

Global site tag (gtag.js) - Google Analytics