这是JSP
<s:form action="uploadfile.action" enctype="multipart/form-data" method="POST" cssClass="bodyClass">
<tr>
<td>
Image:
</td>
<td style="width: 200px;">
<s:file id='image' name='uploadedfile' cssClass="formTextField" />
</td>
<td>
<input type="submit" value="Upload" class="button"/>
</td>
</tr>
</s:form>
这是Struts .xml
<package name="upload" namespace="/upload" extends="struts-default">
<action name="uploadfile" class="com.secureweb.web.upload.UploadAction">
<result name="uploadImage">/pages/fileupload/uploadimage.jsp</result>
</action>
</package>
动作类
public class UploadAction extends ActionSupport {
private File uploadedfile;
public String execute() throws Exception {
try {
System.out.println(uploadedfile.getName());
} catch (Exception e) {
System.out.println(e);
}
return "uploadImage";
}
public File getUploadedfile() {
return uploadedfile;
}
public void setUploadedfile(File uploadedfile) {
this.uploadedfile = uploadedfile;
}
}
我项目中的图书馆
commons-beanutils-1.7.0.jar
commons-lang-2.3.jar
displaytag-1.2.jar
displaytag-export-poi-1.2.jar
displaytag-portlet-1.2.jar
log4j-1.2.14.jar
pljava.jar
postgresql-8.3-603.jdbc4.jar
postgresql-8.3-604.jdbc3.jar
cos.jar
Struts 2 2.1.8 Basic- commons-io-1.3.2.jar
commons-fileupload-1.2.1.jar
commons-logging-1.0.4.jar
freemarker-2.3.15.jar
ognl-2.7.3.jar
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar
Then there is persistance.jar of EJB
And there is also Hibernate Library.
没有其他
结果是NullPointerException,因为属性uploadedfile为null。文件上传无法正常工作。为什么该变量始终为null。我的操作系统是Ubuntu Linux 11.4,Web服务器 - Apache Tomcat 6. IDE- Netbeans。
答案 0 :(得分:0)
可能是因为Struts 2已经实现了完整的文件上传功能,而无需手动完成所有工作。
请参阅file upload docs并使用框架已经为您提供的内容。
以下是一些其他问题:
"simple"
,否则表单生成的HTML将无效;默认主题在表行/单元格中发出表单输入元素。"action"
标记的<s:form>
属性应该是操作的名称,不带 .action
后缀。修复这些问题后,您的代码将按原样运行。你修改过默认的拦截器堆栈吗?
答案 1 :(得分:0)
我建议您将FileUpload Interceptor添加到操作的拦截器堆栈中。您可以参考以下文档了解如何:
http://struts.apache.org/2.0.6/docs/file-upload-interceptor.html
http://struts.apache.org/2.0.14/docs/file-upload.html
http://www.mkyong.com/struts2/struts-2-file-upload-example/
我最近在Tomcat 6.0上运行了一个带有fileupload的项目,Firefox&amp;使用FileUpload拦截器的Chrome对NetBeans 6.9的限制和事情都很好。请不断更新结果。