在使用struts2的<s:file> 标签进行上传文件的时候总是碰到空文件的问题。
具体描述:如果用户不上传文件的话,提交表单的时候就会因为这个地方而出现异常。
原因:action的处理中用到了context.getRealPath(getSavePath());默认是处理这个部分的,没有处理文件为空的情况.
原先的解决方案(未处理该问题):
目前的解决方案(自己都觉得垃圾..但是可以解决问题):
解决思路:因为不传文件时候会报nullPointerException...那就将计就计咯..
ps:真是很垃圾的思路....不过总算给我把问题解决掉了...
具体描述:如果用户不上传文件的话,提交表单的时候就会因为这个地方而出现异常。
原因:action的处理中用到了context.getRealPath(getSavePath());默认是处理这个部分的,没有处理文件为空的情况.
原先的解决方案(未处理该问题):
// System.out.println(context.getRealPath(getSavePath()));
FileOutputStream fos;
fos = new FileOutputStream(context.getRealPath(getSavePath())
+ "\\"+ CharacterTrans.transGB2312ToTo8859_1(getUploadFileName()));
FileInputStream fis = new FileInputStream(getUpload());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
rollMessage.setFujian("upload\\fujian\\"
+ CharacterTrans.transGB2312ToTo8859_1(getUploadFileName()));
目前的解决方案(自己都觉得垃圾..但是可以解决问题):
try {
// System.out.println(context.getRealPath(getSavePath()));
FileOutputStream fos;
fos = new FileOutputStream(context.getRealPath(getSavePath())
+ "\\"
+ CharacterTrans.transGB2312ToTo8859_1(getUploadFileName()));
FileInputStream fis = new FileInputStream(getUpload());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
rollMessage
.setFujian("upload\\fujian\\"
+ CharacterTrans
.transGB2312ToTo8859_1(getUploadFileName()));
} catch (FileNotFoundException e) {
System.out.println("滚动消息的附件上传有误");
rollMessage.setFujian("");
e.printStackTrace();
} catch (NullPointerException e) {
System.out.println("滚动消息的附件上传有误");
rollMessage.setFujian("");
e.printStackTrace();
}
解决思路:因为不传文件时候会报nullPointerException...那就将计就计咯..
ps:真是很垃圾的思路....不过总算给我把问题解决掉了...