struts2文件上传的临时目录错误问题,搞了几天了唉

tuke_tuke 学生  2015-10-12 05:26:21
package com.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UpLoadAction extends ActionSupport{

/**
*
*/
private static final long serialVersionUID = 1L;
//文件上传拦截器fileupload拦截器可以获取上传文件的 文件名和文件对象
//上传文件名
private String FileName;
//上传文件对象
private File file;
//获取struts.xml中配置文件的文件保存路径
private String savePath;
public String getFileName() {
return FileName;
}
public void setFileName(String fileName) {
FileName = fileName;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}

public void setSavePath(String savePath) {
this.savePath = savePath;
}
public String getSavePath() {
//由相对路径获得绝对保存路径
return ServletActionContext.getServletContext().getRealPath(savePath);
}

public String execute() throws Exception{
//以服务器的文件保存地址和源文件名建立上传文件输出流,向里面写数据
FileOutputStream os=new FileOutputStream(getSavePath()+"\\"+getFileName());
//在上传文件对象上建立文件输入里对象,从文件对象里读数据
FileInputStream is=new FileInputStream(getFile());

byte[] buffer=new byte[1024];
int len=0;
while((len=is.read(buffer))>0){
os.write(buffer, 0, len);
}
os.close();
is.close();
return SUCCESS;
}

}

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="globalMessages_zh_CN"></constant>
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<!-- 设置上传文件的临时文件夹,默认使用javax.servlet.context.tempdir -->
<constant name="struts.multipart.saveDir " value="d:\temp" />

<package name="load" extends="struts-default">
<action name="UpLoad" class="com.action.UpLoadAction">

<!-- 文件上传拦截器配置 -->
<interceptor-ref name="fileUpload"><!-- 文件上传拦截器fileUpload要一模一样,否则就会出错!!! -->
<param name="maximumSize">1000000</param><!-- 设置上传文件最大字节数 -->
<param name="allowedTypes">image/jpg,image/x-png,image/gif,image/jpeg,image/pjpeg,image/bmp</param><!-- 设置上传文件类型 -->
</interceptor-ref>
<!-- 默认拦截器必须放在fileUpload之后,否则无效 -->
<interceptor-ref name="defaultStack"/>

<!-- 设置上传文件的保存文件夹,向action属性注入的值也可以来自struts.xml中的action参数 -->
<!-- 动态设置savePath的属性值 -->
<param name="savePath">/save</param>

<result name="input">fileup.jsp</result>
<result name="success">fileupsuccess.jsp</result>
</action>
</package>


</struts>


问题是这样的:我的错误是下面这样,
UpLoadAction.java:49 FileInputStream is=new FileInputStream(getFile());是空指针,而且还报信息: Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.tempdir这个错误,可是设置的临时目录是这样的:<!-- 设置上传文件的临时文件夹,默认使用javax.servlet.context.tempdir -->
<constant name="struts.multipart.saveDir " value="d:\\temp" />,,我设置了临时目录为什么还是有错去???


java.lang.NullPointerException
java.io.FileInputStream.<init>(FileInputStream.java:103)
com.action.UpLoadAction.execute(UpLoadAction.java:49)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
...全文
98 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tuke_tuke 2015-10-13
引用 1 楼 scmod 的回复:
d:\\temp你设置的少了个"\"

两个“\”也是一样的错误,试过了的
回复
scmod 2015-10-13
d:\\temp你设置的少了个"\"
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-10-12 05:26
社区公告
暂无公告