java 文件保存路径问题.
publicstaticStringfileUploadReturnPath(Fileuploads,StringuploadsFileName,Stringmodel)...
public static String fileUploadReturnPath(File uploads,
String uploadsFileName, String model) {
//1.文件上传保存路径
String basePath = ServletActionContext.getServletContext().getRealPath("/upload");
//2.按日期创建文件夹
String datePath = DateUtils.dateToStringByFile(new Date());
datePath+="/";
//3.上传文件后缀
String perfix = uploadsFileName.substring(uploadsFileName.lastIndexOf("."));
//4.文件名使用UUID保证唯一性
String fileName = UUID.randomUUID().toString()+perfix;
//5.如果日期文件夹不存在,创建文件夹
File dateFile = new File(basePath + datePath + model);
if (!dateFile.exists()) {
dateFile.mkdirs();
}
//6.文件上传
File destFile = new File(basePath + datePath + model + "/" + fileName);
//uploads:源文件 renameTo:剪切至 destFile:目标文件
uploads.renameTo(destFile);
return "/upload" + datePath + model + "/" + fileName;
}
/** File dateFile1 = new File(basePath + datePath + model);
dateFile1创建的文件夹路径:D:\apache-tomcat-7.0.70\webapps\elec\upload\2016\07\26用户管理
我想要[26\用户管理]这样结果.于是修改代码为如下:
File dateFile2 = new File(basePath + datePath + "/" + model);
dateFile2的结果://D:\apache-tomcat-7.0.70\webapps\elec\upload\2016\07\26\用户管理
但是创建的文件夹路径是对的了. 但文件上传功能却不好使了~ 我不知道哪里出了问题.
试了各种办法,都没用. 只有File dateFile1 = new File(basePath + datePath + model); 这样才好使.
但文件路径就成了2016\07\26用户管理
于是我用苯办法,在datePath后面加了一行datePath+="/";
此时 文件夹的创建路径为//D:\apache-tomcat-7.0.70\webapps\elec\upload\2016\07\26\用户管理
文件也可以正常上传了.
求 问题出在哪里
*/ 展开
String uploadsFileName, String model) {
//1.文件上传保存路径
String basePath = ServletActionContext.getServletContext().getRealPath("/upload");
//2.按日期创建文件夹
String datePath = DateUtils.dateToStringByFile(new Date());
datePath+="/";
//3.上传文件后缀
String perfix = uploadsFileName.substring(uploadsFileName.lastIndexOf("."));
//4.文件名使用UUID保证唯一性
String fileName = UUID.randomUUID().toString()+perfix;
//5.如果日期文件夹不存在,创建文件夹
File dateFile = new File(basePath + datePath + model);
if (!dateFile.exists()) {
dateFile.mkdirs();
}
//6.文件上传
File destFile = new File(basePath + datePath + model + "/" + fileName);
//uploads:源文件 renameTo:剪切至 destFile:目标文件
uploads.renameTo(destFile);
return "/upload" + datePath + model + "/" + fileName;
}
/** File dateFile1 = new File(basePath + datePath + model);
dateFile1创建的文件夹路径:D:\apache-tomcat-7.0.70\webapps\elec\upload\2016\07\26用户管理
我想要[26\用户管理]这样结果.于是修改代码为如下:
File dateFile2 = new File(basePath + datePath + "/" + model);
dateFile2的结果://D:\apache-tomcat-7.0.70\webapps\elec\upload\2016\07\26\用户管理
但是创建的文件夹路径是对的了. 但文件上传功能却不好使了~ 我不知道哪里出了问题.
试了各种办法,都没用. 只有File dateFile1 = new File(basePath + datePath + model); 这样才好使.
但文件路径就成了2016\07\26用户管理
于是我用苯办法,在datePath后面加了一行datePath+="/";
此时 文件夹的创建路径为//D:\apache-tomcat-7.0.70\webapps\elec\upload\2016\07\26\用户管理
文件也可以正常上传了.
求 问题出在哪里
*/ 展开
展开全部
改为:File dateFile2 = new File(basePath + datePath + "/" + model);的时候不好使应该是你的返回值没有加 文件分隔符的原因。
你最后成功是因为你加了 datePath+="/";
让返回和新建文件路径都一致了。
另外不要用“/” 最好使用:File.separator;
还有renameTo只能在windows下使用,limux不行,而且即使是在windonws下,如果file systems不一样也会失败的,建议copy文件自己重写或者使用common-io的工具类。
你最后成功是因为你加了 datePath+="/";
让返回和新建文件路径都一致了。
另外不要用“/” 最好使用:File.separator;
还有renameTo只能在windows下使用,limux不行,而且即使是在windonws下,如果file systems不一样也会失败的,建议copy文件自己重写或者使用common-io的工具类。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询