jfinal文件上传下载

来源:互联网 发布:多旅行商问题算法 编辑:程序博客网 时间:2024/05/29 16:06
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 extendsController{
    publicvoid upload() {
        String path =new SimpleDateFormat("yyyy/MM/dd").format(newDate());
        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());
    }
 
    publicvoid 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");
    }
 
    privateString 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);
        returnresult;
    }

转自www.oschina.net/code/snippet_2255303_43121mi-la-kingjfinal
0 0