JFinal3.0快速上手,Controller之文件操作(二十
2017-07-25 本文已影响673人
葉糖糖
嗨,亲爱的小伙伴们!炎炎夏日你们还在坚持写代码么?还是选择了空调、沙发、葛优躺?今天我们将一起学习关于文件上传下载的一些小技巧。
一、getFile文件上传
JFinal让文件上传变得更加简单,几行代码调用就能完成文件上传功能。在文件上传的表单中一定要加上
enctype="multipart/form-data"
,否则不能正常完成上传任务。这个属性其实是改变了表单的MIME编码,让表单支持二进制数据的传输。
1、编写html页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传Demo</title>
</head>
<body>
<!--上传附件--->
<form action="/up/upLoadTest" method="post" enctype="multipart/form-data">
<label>请选择上传文件:</label><input type="file" name="userList" />
<button type="submit">上传</button>
</form>
<!--下载文件-->
<a href="/up/downLoadTest">下载</a>
</body>
</html>
2、编写服务端代码
这边因为代码不是很多,所以就直接一下看。需要注意的地方会给予提示。
package com.demo.up;
import java.io.File;
import com.jfinal.core.Controller;
import com.jfinal.kit.FileKit;
import com.jfinal.kit.PathKit;
/**
*
* @ClassName: UpLoadTest
* @Description:文件的上传与下载演示Demo
* @author: sugar Ye
* @date: 2017年7月25日 上午10:20:39
* @Copyright: 2017 www.yetangtang.com Inc. All rights reserved.
*/
public class UpLoadTest extends Controller {
/**
* @Title: index
* @Description: 默认渲染方法
* @return: void
*/
public void index(){
render("upLoad.html");
}
/**
*
* @Title: upLoadTest
* @Description:最简单文件的上传
* @param: null
* @return: void
*/
public void upLoadTest(){
//调用上传方法
getFile();
//提示
renderText("upload...");
}
/**
* @Title: downLoadTest
* @Description: 根据文件路径下载(删除)文件
* @param: 测试没传参,实际情况自行调整
* @return: void
*/
public void downLoadTest(){
//获取路径
String the_path=PathKit.getWebRootPath()+"\\upload\\psb.jpg";
//创建文件对象
File file=new File(the_path);
//删除文件
//FileKit.delete(file);
//下载文件
renderFile(file);
}
}
其实关于文件上传这一块是非常的简单的,没有什么特别要去讲的。当然还是有一点需要注意的。那就是当表单中既有正常的表单数据,又有附件的时候,需要先调用** getFile 系列方法,然后才能去调用getPara **系列方法,否则获取不到参数信息。这点要切记。
二、拓展阅读
这是关于文件删除的源码,也是非常的清晰。小伙伴们有时间可以多看看总会有所收获。
package com.jfinal.kit;
import java.io.File;
/**
* FileKit.
*/
public class FileKit {
public static void delete(File file) {
if (file != null && file.exists()) {
if (file.isFile()) {
file.delete();
}
else if (file.isDirectory()) {
File files[] = file.listFiles();
for (int i=0; i<files.length; i++) {
delete(files[i]);
}
}
file.delete();
}
}
}
三、爱心小贴士
前方高能,对于多文件的上传可以是用getFiles()系列方法,同样轻松。其他精彩技能留给小伙伴们自己去发现。
PS:祝大家学习愉快!