import com.alibaba.fastjson.JSONObject;
import com.jfinal.core.Controller;
import com.jfinal.ext.kit.ZipUtil;
import com.jfinal.kit.PathKit;
import com.jfinal.upload.UploadFile;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
public class FileController extends Controller{
public void upload() {
String path = new SimpleDateFormat("yyyy/MM/dd").format(new Date());
UploadFile file = getFile("imgFile", PathKit.getWebRootPath() + "/temp");
File source = file.getFile();
String fileName = file.getFileName();
String extension = fileName.substring(fileName.lastIndexOf("."));
String prefix;
if(".png".equals(extension) || ".jpg".equals(extension) || ".gif".equals(extension)){
prefix = "img";
fileName = generateWord() + extension;
}else{
prefix = "file";
}
JSONObject json = new JSONObject();
try {
FileInputStream fis = new FileInputStream(source);
File targetDir = new File(PathKit.getWebRootPath() + "/" + prefix + "/u/"
+ path);
if (!targetDir.exists()) {
targetDir.mkdirs();
}
File target = new File(targetDir, fileName);
if (!target.exists()) {
target.createNewFile();
}
FileOutputStream fos = new FileOutputStream(target);
byte[] bts = new byte[300];
while (fis.read(bts, 0, 300) != -1) {
fos.write(bts, 0, 300);
}
fos.close();
fis.close();
json.put("error", 0);
json.put("url", "/" + prefix + "/u/" + path + "/" + fileName);
source.delete();
} catch (FileNotFoundException e) {
json.put("error", 1);
json.put("message", "上传出现错误,请稍后再上传");
} catch (IOException e) {
json.put("error", 1);
json.put("message", "文件写入服务器出现错误,请稍后再上传");
}
renderJson(json.toJSONString());
}
public void download(){
String path = getPara(0);
String img = PathKit.getWebRootPath() + "/img/u/" + path.replaceAll("_", "/");
ZipUtil.zip(img, PathKit.getWebRootPath() + "/img/temp/" + path);
renderFile("/img/temp/" + path + ".zip");
}
private String generateWord() {
String[] beforeShuffle = new String[] { "2", "3", "4", "5", "6", "7",
"8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
"W", "X", "Y", "Z" };
List<String> list = Arrays.asList(beforeShuffle);
Collections.shuffle(list);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
sb.append(list.get(i));
}
String afterShuffle = sb.toString();
String result = afterShuffle.substring(5, 9);
return result;
}
原文地址:http://www.oschina.net/code/snippet_2255303_43121