<action name="uploadAction" class="com.wang.blog.action.UploadAction">
<param name="allowTypes">
image/pjpeg,image/bmp,image/jpg,image/png,image/gif,image/jpeg
</param>
<param name="savePath">/upload</param>
<result>/success.jsp</result>
<result name="input">/index.jsp</result>
</action>
我配置了一个savePath就是文件上传的保存路径。Action中通过ServletActionContext.getServletContext().getRealPath(savePath)得到完整的保存路径,控制台打印就是这样的路径F:\apache-tomcat-6.0.32\webapps\struts2_1\upload,然后根据这个路径加上上传文件的名称new一个File实现文件保存。但最后会报FileNotFoundException,后来我在F:\apache-tomcat-6.0.32\webapps\struts2_1目录下创建了一个upload文件夹问题就决解了,不报错。是不是new File的时候程序不会帮我们创建一个upload文件夹?还是别的原因?请问像这种问题还有没其他的决解方法。毕竟这个方法太土每次都要自己创一个相应的文件夹。
4 个解决方案
#1
具体代码没看到,不过应该是这里出错的,
异常说,找不到你所说的文件夹,你代码里面有没有,检测文件夹这段啊,
如果没有的话加上吧
代码贴给你:
上面的代码很清晰,我是做的比较复杂,用了uuid替换原来上传的文件名,其他就是你想要知道的了
异常说,找不到你所说的文件夹,你代码里面有没有,检测文件夹这段啊,
如果没有的话加上吧
代码贴给你:
public String save() {
if (file != null && file.exists()) {
String path = ServletActionContext.getRequest().getRealPath("/image");
String fileName = new UUIDGenerator().generate().toString(); //用UUID算法取名
String data[] = fileFileName.split("\\.");
String houzhui = data[data.length - 1]; // abc.cdf.jpg
File to = new File(path, fileName + "." + houzhui);
try {
FileUtil.copyFile(file, to); //这个是我封装的io流而已,你可以不管
stu.setImage("/image/" + fileName + "." + houzhui);
} catch (IOException e) {
e.printStackTrace();
}
}
//持久层处理代码省略
return "save_next";
}
上面的代码很清晰,我是做的比较复杂,用了uuid替换原来上传的文件名,其他就是你想要知道的了
#2
你有没有试过new File("file").createNewFile();方法去创建 按理说是应该自动创建文件夹 有时候是不会创建 可以用 new File("dirs").mkdirs()方法来创建 有2个 一个mkdir 一个mkdirs 第二个子目录和父目录都会创建 创建文件夹有几率失败的 返回值是个boolean - -
#3
new File() 确实是不会自动创建不存在的目录的,因此在使用该方法时,经常需要先判断一下目录是否存在,如果存在那么一切OK,如果不存在,那么就先创建目录然后再创建文件。
#4
异常捕获处理下。
#1
具体代码没看到,不过应该是这里出错的,
异常说,找不到你所说的文件夹,你代码里面有没有,检测文件夹这段啊,
如果没有的话加上吧
代码贴给你:
上面的代码很清晰,我是做的比较复杂,用了uuid替换原来上传的文件名,其他就是你想要知道的了
异常说,找不到你所说的文件夹,你代码里面有没有,检测文件夹这段啊,
如果没有的话加上吧
代码贴给你:
public String save() {
if (file != null && file.exists()) {
String path = ServletActionContext.getRequest().getRealPath("/image");
String fileName = new UUIDGenerator().generate().toString(); //用UUID算法取名
String data[] = fileFileName.split("\\.");
String houzhui = data[data.length - 1]; // abc.cdf.jpg
File to = new File(path, fileName + "." + houzhui);
try {
FileUtil.copyFile(file, to); //这个是我封装的io流而已,你可以不管
stu.setImage("/image/" + fileName + "." + houzhui);
} catch (IOException e) {
e.printStackTrace();
}
}
//持久层处理代码省略
return "save_next";
}
上面的代码很清晰,我是做的比较复杂,用了uuid替换原来上传的文件名,其他就是你想要知道的了
#2
你有没有试过new File("file").createNewFile();方法去创建 按理说是应该自动创建文件夹 有时候是不会创建 可以用 new File("dirs").mkdirs()方法来创建 有2个 一个mkdir 一个mkdirs 第二个子目录和父目录都会创建 创建文件夹有几率失败的 返回值是个boolean - -
#3
new File() 确实是不会自动创建不存在的目录的,因此在使用该方法时,经常需要先判断一下目录是否存在,如果存在那么一切OK,如果不存在,那么就先创建目录然后再创建文件。
#4
异常捕获处理下。