处理“上传文件为空”问题的很垃圾的解决方案

在使用struts2的<s:file> 标签进行上传文件的时候总是碰到空文件的问题。
具体描述:如果用户不上传文件的话,提交表单的时候就会因为这个地方而出现异常。
原因: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:真是很垃圾的思路....不过总算给我把问题解决掉了...

你可能感兴趣的:(上传文件)