我正在Struts2应用程序中进行文件上载过程。当我在动作类中显示filename和contenttype时,它显示空指针异常。
我已经包含了jar文件并使用了以下代码。
在upload.jsp
中<s:form action="saveBulkStores.action" method="POST" enctype="multipart/form-data">
<s:actionmessage name="message"/>
<s:label value="File Name : *" />
<s:file name="upload" label="File" size="40"/>
<br>
<br>
<s:submit name="ADD" value="UPLOAD"/>
<input type="button" onClick="cancelFunction()" name="Cancel" value="Cancel" tabindex="10">
</s:form>
在struts.xml中
<action name="saveBulkStores" class="com.rewardz.action.FilesUploadAction" method="saveBulkStores">
<interceptor-ref name="fileUpload">
<param name="maximumSize">52428800</param>
</interceptor-ref>
<interceptor-ref name="basicStack"/>
<result name="input">/uploadfile.jsp</result>
<result name="viewFile">/viewfile.jsp</result>
<result name="Reload">/uploadfile.jsp</result>
</action>
在Action类中:
private File file;
private String contentType;
private String filename;
public void setUpload(File file) {
this.file = file;
}
public void setUploadContentType(String contentType) {
this.contentType = contentType;
}
public void setUploadFileName(String filename) {
this.filename = filename;
}
public String saveBulkStores() throws IOException{
System.out.println("check Bulk upload file");
String filePath = request.getRealPath("/");
System.out.println("Server path:" + filePath);
System.out.println("UPLOADFILECONTENT TYPE:"+contentType);
System.out.println("UPLOADFILENAME:"+filename);
System.out.println("UPLOADFILE:"+file);
System.out.println("**********************************");
value = "viewFile";
System.out.println("Forward Value:"+value);
return value;
}
Server.log中的输出:(使用GlassFish Server)
check Bulk upload file
C:\glassfish3_installer\glassfish\domains\domain1\applications\My_Application\
UPLOADFILECONTENT TYPE:null
UPLOADFILENAME:null
UPLOADFILE:null
所以请任何人帮我在Struts2的上传过程中获取文件名,文件路径。
答案 0 :(得分:0)
Hi Shiva问题在于您在动作类中使用的标记。
<s:file name="upload" label="File" size="40" />
在您的操作类中不存在upload属性的情况下,有一个属性文件文件,您使用文件而不是上传,以便解决您的问题
<s:file id="file" name="file" />