求解:Struct2 上传图片报
java.lang.NullPointerException错误
上传UpLoad.jsp:
<s:actionerror/>
<s:form action="upload" enctype="multipart/form-data" method="post">
<s:label value="上传文件"/>
<s:file name="picture" label="文件一"/>
<s:submit value=" 开始上传 " method="upload"></s:submit>
</s:form>
上传成功页面 UploadList.jsp:
<body>
文件已经保存到:
<a href="upload/<s:property value="pictureFileName" />"
target=_blank><s:property value="pictureFileName" />
</a>
<br/>
<br/>
<<<a href="upload.action">继续上传</a>
</body>
UploadAction:
public class UploadAction extends ActionSupport{
private static final long serialVersionUID = -60950803930068947L;
private File picture;
private String pictureContentType;
private String pictureFileName;
public String execute() {
return "input1";
}
public String upload() throws Exception {
System.out.println("Context: "+ ServletActionContext.getServletContext().getRealPath("upload"));
System.out.println("File: " + picture);
System.out.println("FileName: " +pictureFileName );
File saved = new File(ServletActionContext.getServletContext()
.getRealPath("upload"), pictureFileName);
System.out.println("saved : " +saved);
InputStream ins = null;
OutputStream ous = null;
try {
saved.getParentFile().mkdirs();
ins = new FileInputStream(picture);
ous = new FileOutputStream(saved);
byte[] b = new byte[1024];
int len = 0;
while ((len = ins.read(b)) != -1) {
ous.write(b, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ous != null)
ous.close();
if (ins != null)
ins.close();
}
return "list";
}
public File getPicture() {
return picture;
}
public void setPicture(File file) {
this.picture = file;
}
public String getPictureContentType() {
return pictureContentType;
}
public void setPictureContentType(String fileContentType) {
this.pictureContentType = fileContentType;
}
public String getPictureFileName() {
return pictureFileName;
}
public void setPictureFileName(String fileFileName) {
this.pictureFileName = fileFileName;
}
}
struct.xml:
<action name="upload" class="cn.gov.pbc.action.UploadAction" method="upload">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">image/bmp,image/x-png,image/gif,image/jpeg</param>
<param name="maximumSize">204800</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result name="input1">/UpLoad.jsp</result>
<result name="list">/UploadList.jsp</result>
</action>
------解决方案--------------------你把
System.out.println("Context: "+ ServletActionContext.getServletContext().getRealPath("upload"));
System.out.println("File: " + picture);
System.out.println("FileName: " +pictureFileName );
下面的代码屏蔽掉,看看能不能获取到文件名。。