嗨粉铐,親愛的小伙伴們!炎炎夏日你們還在堅(jiān)持寫代碼么卤档?還是選擇了空調(diào)蝙泼、沙發(fā)、葛優(yōu)躺劝枣?今天我們將一起學(xué)習(xí)關(guān)于文件上傳下載的一些小技巧踱承。
一、getFile文件上傳
JFinal讓文件上傳變得更加簡(jiǎn)單哨免,幾行代碼調(diào)用就能完成文件上傳功能茎活。在文件上傳的表單中一定要加上
enctype="multipart/form-data"
,否則不能正常完成上傳任務(wù)琢唾。這個(gè)屬性其實(shí)是改變了表單的MIME編碼载荔,讓表單支持二進(jìn)制數(shù)據(jù)的傳輸。
1采桃、編寫html頁(yè)面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上傳Demo</title>
</head>
<body>
<!--上傳附件--->
<form action="/up/upLoadTest" method="post" enctype="multipart/form-data">
<label>請(qǐng)選擇上傳文件:</label><input type="file" name="userList" />
<button type="submit">上傳</button>
</form>
<!--下載文件-->
<a href="/up/downLoadTest">下載</a>
</body>
</html>
2懒熙、編寫服務(wù)端代碼
這邊因?yàn)榇a不是很多丘损,所以就直接一下看。需要注意的地方會(huì)給予提示工扎。
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: 默認(rèn)渲染方法
* @return: void
*/
public void index(){
render("upLoad.html");
}
/**
*
* @Title: upLoadTest
* @Description:最簡(jiǎn)單文件的上傳
* @param: null
* @return: void
*/
public void upLoadTest(){
//調(diào)用上傳方法
getFile();
//提示
renderText("upload...");
}
/**
* @Title: downLoadTest
* @Description: 根據(jù)文件路徑下載(刪除)文件
* @param: 測(cè)試沒傳參徘钥,實(shí)際情況自行調(diào)整
* @return: void
*/
public void downLoadTest(){
//獲取路徑
String the_path=PathKit.getWebRootPath()+"\\upload\\psb.jpg";
//創(chuàng)建文件對(duì)象
File file=new File(the_path);
//刪除文件
//FileKit.delete(file);
//下載文件
renderFile(file);
}
}
其實(shí)關(guān)于文件上傳這一塊是非常的簡(jiǎn)單的,沒有什么特別要去講的肢娘。當(dāng)然還是有一點(diǎn)需要注意的呈础。那就是當(dāng)表單中既有正常的表單數(shù)據(jù),又有附件的時(shí)候橱健,需要先調(diào)用** getFile 系列方法而钞,然后才能去調(diào)用getPara **系列方法,否則獲取不到參數(shù)信息拘荡。這點(diǎn)要切記臼节。
二、拓展閱讀
這是關(guān)于文件刪除的源碼珊皿,也是非常的清晰网缝。小伙伴們有時(shí)間可以多看看總會(huì)有所收獲。
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();
}
}
}
三蟋定、愛心小貼士
前方高能途凫,對(duì)于多文件的上傳可以是用getFiles()系列方法,同樣輕松溢吻。其他精彩技能留給小伙伴們自己去發(fā)現(xiàn)维费。
PS:祝大家學(xué)習(xí)愉快!