前提准备:导包 cos-26Dec2008.jar
1.配置默认上传路径
public void configConstant(Constants me) {
*
*
String path = JFinal.me().getServletContext().getRealPath("/");
me.setUploadedFileSaveDirectory(path+"\\upload\\");
//事实证明,不配置它也会默认创建一个名为upload文件夹将上传的文件放进去。
//因此,上传路径的文件夹是不需要自己先创建好的。
*
*
}
2.jsp页面(enctype="multipart/form-data" 是必须的)action 看自己的哪个,我这里是user路由下的upload方法中接收文件
<form action="user/upload" method="post" enctype="multipart/form-data">
<div class="form-group">
<label class="sr-only" for="inputfile">上传文件</label>
<input type="file" id="inputfile" name="file">//其实就这句有用
</div>
</form>
3.Control
public void upload(){
/*
* 自定义保存路径
*String realPath = JFinal.me().getServletContext().getRealPath("/");
*String savePath = realPath+"\\upload1\\";
*UploadFile fine1 = getFile("file",savePath);
**/
// 不填写保存路径
UploadFile fine = getFile("file");//file是jsp页面input type='file'的name
render("/edit.jsp");
}
4.最近做项目用这个出现的一些问题,也许是我对文件上传的理解不够深。
1)如果upload方法上加了验证器Validator。真实的效果是文件上传之后才调用Validator。
2)如果不是上传表单,form中就千万别加 enctype="multipart/form-data"
3 务必将 getFile()方法凡在method的第一行位置。
4)关于文件上传改名写了个方法 有点乱乱的 但是管用。。
//上传新文件并删除旧文件,如果不上传应该就没有删除旧文件的必要吧。
public static File renameFile(UploadFile uploadFile, String oldFilePath) {
if (uploadFile != null) {
File f = uploadFile.getFile();
String houzhui = f.getName()
.substring(f.getName().lastIndexOf("."));
Long l = System.currentTimeMillis();
String path = uploadFile.getSaveDirectory();
if (oldFilePath != null && !"".equals(oldFilePath)) {
oldFilePath = oldFilePath
.substring(oldFilePath.indexOf("/") + 1);
File old = new File(path + oldFilePath);
boolean b = old.exists() ? old.delete() : false;
System.out.println(b);
}
File fn = new File(path + "pic" + l + houzhui);//名字这里设置规则就好了
f.renameTo(fn);
return fn;
}
有待补充、
Jfinal 上传文件
点赞
收藏