5.jfinal上传下载文件

来源:互联网 发布:最新网络歌曲下载 编辑:程序博客网 时间:2024/06/05 19:41

建立jfinal工程使用jetty运行
工程结构如下(注意要导入cosjar包)
这里写图片描述
DemoConfig.java类

package com.cjq.config;import com.cjq.controller.FileController;import com.jfinal.config.Constants;import com.jfinal.config.Handlers;import com.jfinal.config.Interceptors;import com.jfinal.config.JFinalConfig;import com.jfinal.config.Plugins;import com.jfinal.config.Routes;import com.jfinal.core.JFinal;import com.jfinal.plugin.redis.RedisPlugin;import com.jfinal.render.ViewType;public class DemoConfig extends JFinalConfig{    @Override    public void configConstant(Constants arg0) {        arg0.setViewType(ViewType.JSP);    }    @Override    public void configHandler(Handlers arg0) {    }    @Override    public void configInterceptor(Interceptors arg0) {    }    @Override    public void configPlugin(Plugins arg0) {    }    @Override    public void configRoute(Routes arg0) {        arg0.add("file",FileController.class,"file");    }    public static void main(String[] args) {        JFinal.start("WebContent", 80, "/", 5);    }}

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <display-name>jfinal_demo</display-name>    <filter>        <filter-name>jfinal</filter-name>        <filter-class>com.jfinal.core.JFinalFilter</filter-class>        <init-param>            <param-name>configClass</param-name>            <param-value>com.cjq.config.DemoConfig</param-value>        </init-param>    </filter>    <filter-mapping>        <filter-name>jfinal</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping></web-app>

FileService.java

package com.cjq.controller;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.channels.FileChannel;public class FileService {     //文件拷贝     public void fileChannelCopy(File s, File t) {            FileInputStream fi = null;//文件输入流            FileOutputStream fo = null;//文件输出流            FileChannel in = null;            FileChannel out = null;            try {                fi = new FileInputStream(s);                fo = new FileOutputStream(t);                in = fi.getChannel();//获取读入的文件通道                out = fo.getChannel();//获取写出的文件通道                in.transferTo(0, in.size(), out);// 连接两个通道,从文件输入流读取数据到文件输出流            } catch (IOException e) {                e.printStackTrace();            } finally {                try {                    fi.close();                    in.close();                    fo.close();                    out.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }}

FileController.java

package com.cjq.controller;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Collections;import java.util.Date;import java.util.List;import java.util.UUID;import com.jfinal.core.Controller;import com.jfinal.kit.PathKit;import com.jfinal.upload.UploadFile;public class FileController extends Controller {    public void index() {        render("index.html");    }    public void downfile() {//文件下载        File file = new File("G:\\Jfinal\\file\\test.png");     //本地的一张图片        if (file.exists()) { //如果文件存在            renderFile(file);        } else {            renderJson();        }    }    public void uploadFile() {//文件上传        UploadFile uploadFile = this.getFile();//获取前台上传文件对象        String fileName = uploadFile.getOriginalFileName();//获取文件名        File file = uploadFile.getFile();//获取文件对象        FileService fs = new FileService();        File t = new File("G:\\Jfinal\\file\\" + UUID.randomUUID().toString()                + file.getName().substring(file.getName().lastIndexOf(".")));//设置本地上传文件对象(并重命名)        try {            t.createNewFile();        } catch (IOException e) {            e.printStackTrace();        }        fs.fileChannelCopy(file, t);//将上传的文件的数据拷贝到本地新建的文件        file.delete();        this.renderHtml("success,<a href=\"./\">back</a>");    }}

index.html

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><form action="/file/uploadFile" enctype="multipart/form-data" method="post">    <input type="file" name="file"/>    <input type="submit"/></form><a href="/file/downfile">下载</a></body></html>

运行JfinalDemo类,打开浏览器访问http://localhost/file

这里写图片描述

点击选择文件上传,选择一个文件上传,我这里上传的是一张图片

这里写图片描述

点击打开
这里写图片描述

然后点提交
这里写图片描述

去本地目录下查看
这里写图片描述

点击上面页面back超链接,回到上一个地址,点击下载
(我下载的是G:\Jfinal\file\test.jpg的图片)
这里写图片描述

这里写图片描述

源码百度网盘链接:http://pan.baidu.com/s/1dFOWnp3 密码:n6au

原创粉丝点击