jfinal2.2 上传文件bug

Krash 发布于 2016/01/22 01:05
阅读 790
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

经测试发现2.2的jar包会导致上传成功后在WebRoot目录生成一个upload目录,好像是本地路径……导致项目再次启动后上传失效……2.0版本并没有这个问题…… 

@JFinal

加载中
0
JFinal
JFinal
该评论暂时无法显示,详情咨询 QQ 群:点此入群
JFinal
JFinal
回复 @Krash : 指定 baseUploadPath 是很好的,这样就可以将所有上传文件统一到一个基础路径之下来管理。在上传文件时,再使用相对路径,就可以将不同的上传文件时行分目录管理。如果还有更个性化的需求,可以在上传文件完成后,再move 文件到自己希望的地方去
Krash
Krash
回复 @JFinal : 好吧,那还是设置默认为一个指定目录吧。毕竟这个版本是必须指定一个默认路径的,其实是为了减少每次指定路径的工作量吧………^_^
JFinal
JFinal
回复 @Krash : jfinal 2.2 相当于将 baseUploadPath 给固定住了,如果在 getFile 的时候指定一个路径,那么这个路径都是相对于这个baseUploadPath的一个相对的路径。baseUploadPath 可以使用绝对路径的方式设置在项目之外,也可以使用相对路径的方式设置在项目之内
Krash
Krash
如果不想改config文件的话, getFile("file","file"); 把PathKit.getWebRootPath()去掉也可以。 本质上是个路径的问题
0
JFinal
JFinal
     getFile 的代码是啥样的?jfinal 的文件上传路径是有点改变,getFile 时如果指定路径,那么这个路径是相对于 baseUploadPath 的一个相对路径,以前可以为绝对路径,2.2 改为相对路径了。
0
Krash
Krash

引用来自“JFinal”的评论

     getFile 的代码是啥样的?jfinal 的文件上传路径是有点改变,getFile 时如果指定路径,那么这个路径是相对于 baseUploadPath 的一个相对路径,以前可以为绝对路径,2.2 改为相对路径了。

public class UploadController extends Controller {

public void index() {

UploadFile file = getFile("file", PathKit.getWebRootPath() + "/file/");

if (file != null) {

String fileName = file.getFile().getName();

String extentname = fileName.substring(fileName.lastIndexOf("."));

String path = "/file/" + UUID.randomUUID().toString();

path = path + extentname;

boolean result = file.getFile().renameTo(new File(PathKit.getWebRootPath() + path));

System.out.println(result);

if(result){

setAttr("result", "success");

SysFile sysFile = new SysFile();

sysFile.set("url", path);

sysFile.save();

setAttr("fileId", sysFile.getLong("id"));

setAttr("url", path);

}else{

setAttr("result", "fail");

}

} else {

setAttr("result", "fail");

}

renderJson();

}


}


上传用的插件是

ajaxfileupload

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部