java.io.FileNotFoundException: Source 'C:\Documents and Settings\Administrator\桌面\apache-tomcat-6.0.26\work\Catalina\localhost\appstore2\upload_55add1bb_12b0895c35d__8000_00000002.tmp' does not exist发现以上错误,但是在本地测试代码中完全可以通过, 文件名称,上传文件,类型, 都可以在后台得到,但是在项目里面就是提示 无法找到资源文件!
解决方案 »
- Spring+Mybatis用于J2SE的时候,怎么初始化------T_T
- 请教老手,方向开发ERP.OA.HR等企业应用系统.需要掌握Java哪些技术?
- hibernate问题再求解
- 如何知道邮件是否发送成功?
- 求助:新手求助入门指导
- java获取时间段内的工作时长
- jbuilder里面启动weblogic出现问题,高分请教~~(在线等,解决即揭贴)
- hibernate总是不能读取xml
- 想认识几个用struts、hibernate和jsp标签的朋友
- java 如何获取新闻网页源码内容中的发布时间时间?
- 求助 java怎么操作excl导入导出oracle数据库啊
- struts2表单数据验证,没有起作用。帮我看看是哪里问题
upload_4321c64d_12b08a1cca9__8000_00000003.tmp
upload_4321c64d_12b08a1cca9__8000_00000004.tmp
可是很不辛,没有05 ,而我在后台打印的文件名称确实05,这是什么原因造成的呢?
在C:\Documents and Settings\Administrator\桌面\apache-tomcat-6.0.26\work\Catalina\localhost\appstore2\文件夹下生成了两个文件,
upload_4321c64d_12b08a1cca9__8000_00000003.tmp
upload_4321c64d_12b08a1cca9__8000_00000004.tmp
而我在后台获得的是:
C:\Documents and Settings\Administrator\桌面\apache-tomcat-6.0.26\work\Catalina\localhost\appstore2\upload_4321c64d_12b08a1cca9__8000_00000005.tmp所以导致了文件无法找到的错误!
1.commons-fileupload.jar包是否导入。
2.是否配置了对应的fileupload拦截器,拦截器是否在上传的地方应用上了
<interceptors>
<interceptor name="fileUpload" class="......">
</interceptor>
</interceptors>
3.action中定义的文件名称是否正确,
例如:页面上传文件名为file action自动获取文件名称为:fileFileName4.上传拿文件名称的时候,不要使用file.getName去那上传的文件名称,要使用你定义的fileFileName区获取当前上传文件的名称,否则,你使用file.getName获得的文件名称就是upload_4321c64d_12b08a1cca9__8000_00000003.tmp,这样的格式。你可以试试!
这种文件是缓冲文件,你最好贴出你是怎样处理这个文件的代码,如果你直接判断这个文件是会出现问题的
String path = ServletActionContext.getServletContext().getRealPath("/realPath") + "\\" + this.getFileFileName();
System.out.println(path);
System.out.println(file.getName());
FileInputStream in = new FileInputStream(file);
FileOutputStream out = new FileOutputStream(path);
int size = 0;
while((size=in.read()) != -1){
out.write(size);
}
out.close();
in.close();
return SUCCESS;
}这就是我上传时的代码,fileNotException
private String uploadFileName;
private String uploadContentType;
public File getUpload() {
return upload;
} public void setUpload(File upload) {
this.upload = upload;
} public String getUploadFileName() {
return uploadFileName;
} public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
} public String getUploadContentType() {
return uploadContentType;
} public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String execute() throws Exception {
System.out.println(upload.getParent());//文件父路径
System.out.println(uploadFileName);//文件名
System.out.println(uploadContentType);//文件类型
return null;
}最好使用上面的,struts2上传文件已经有些配置的了,最好自己百度查查struts2的上传文件
注意 private File upload;
private String uploadFileName;
private String uploadContentType;
这三个的命名规则,struts2 根据他们来获取名,类型,你jsp的页面的上传文件name命名要用 upload,他要跟File upload 相同
这个依然是缓冲文件的,你需要
File f=upload;
这样来转换文件
http://leeldy.blog.163.com/blog/static/13985306200931353544644/这是我百度得,应该跟上面的差不多了
upload_c42ff28_12b0928a73f__8000_00000004.tmp
upload_c42ff28_12b0928a73f__8000_00000005.tmp而我在后台得到的文件是:
upload_c42ff28_12b0928a73f__8000_00000006.tmp所以出现了这种情况,FileNotFundException
如何才能让后台得到的值和系统生成的相同?
D:\apache-tomcat-6.0.26\work\Catalina\localhost\appstore2\upload_c42ff28_12b0928a73f__8000_00000013.tmp
这是我后台打印的文件路径:
D:\apache-tomcat-6.0.26\work\Catalina\localhost\appstore2\upload_c42ff28_12b0928a73f__8000_00000014.tmp有文件夹啊!