JFinal3.4 Controller之文件操作(上传以及下载)

最近做项目用到了文件上传以及下载的一些接口操作,恰好JFinal3.4 自带这些功能吗,下面说一下关于文件上传下载的一些小技巧。

一、getFile文件上传

JFinal让文件上传变得更加简单,几行代码调用就能完成文件上传功能。在文件上传前端代码的表单中一定要加上enctype="multipart/form-data",否则不能正常完成上传任务。这个属性其实是改变了表单的MIME编码,让表单支持二进制数据的传输。

1、编写html页面

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>文件上传Demo</title>
</head>
<body>
<!--上传附件--->
<form action="/action/report/upload" method="post" enctype="multipart/form-data">
    <label>请选择上传文件:</label><input type="file" name="userList" />
    <button type="submit">上传</button>
</form>

<!--下载文件-->
<a href="/action/report/downLoadTest">下载</a>
</body>
</html>

2、编写服务端代码

这边因为代码不是很多,所以就直接一下看。需要注意的地方会给予提示。

 

import java.io.File;
import com.jfinal.core.Controller;
import com.jfinal.kit.FileKit;
import com.jfinal.kit.PathKit;

/**
 * 
 * @ClassName:  UpLoad 
 * @Description:文件的上传与下载演示Demo  
 */

public class UpLoad extends Controller {
    
    /**
     * @Title: index 
     * @Description:  默认渲染方法        
     * @return: void      
     */
    public void index(){
        render("upLoad.html");
    }
    
    /**
     * 
     * @Title: upLoad
     * @Description:最简单文件的上传 
     * @param: null      
     * @return: void      
     */
    public void upLoad(){
        //调用上传方法
        UploadFile up = getFile();
        //文件重命名
        // up.getFile().renameTo(new File("")); 
        renderText("upload...");
    }
    
    /**
     * @Title: downLoad  
     * @Description: 根据文件路径下载(删除)文件  
     * @param: 测试没传参,实际情况自行调整      
     * @return: void
     */
    public void downLoad(){
        //获取路径
        String the_path=PathKit.getWebRootPath()+"\\upload\\123.word";
        
        //创建文件对象
        File file=new File(the_path);
        
        //删除文件
        //FileKit.delete(file);
        
        //下载文件
        renderFile(file);
    }
}

二、文件删除源码

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();
        }
    }
}

三、上传文件设置

在JFinalConfig中可配置上传文件设置的一些属性,如下:

public void configConstant(Constants constants) {
        //设置上传文件的最大大小
        constants.setMaxPostSize(1024);
        //设置上传文件的下载路径,系统有默认路径,可不设
        //constants.setBaseUploadPath("/upload");
        //配置文件下载路径,系统有默认路径,可不设
        //constants.setBaseDownloadPath("/download");
}

四、传参

当表单中既有正常的表单数据,又有附件的时候,需要先调用 getFile 系列方法,然后才能去调用getPara系列方法,否则获取不到参数信息:

UploadFile uploadFile = getFile();
String name = getPara("fileName");

五、多文件上传

对于多文件的上传可以是用getFiles()系列方法:

 /**多文件上传
    */
public void moreUploadFile(){ 

        //统一上传到默认的项目根目录
        List<UploadFile>  upFile = getFiles();

        //重命名:循环遍历获取文件,如果不需要重命名则无需此步骤
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
        String formatTime = sdf.format(new Date());
        for(UploadFile upf: upFile){
            System.out.println("循环获取文件名:"+upf.getFileName());
            //根据原文件名使用时间戳重命名,保存,原来的临时文件会自动删除
            String fileName = upf.getFileName();
            String last = fileName.substring(fileName.lastIndexOf("."));
            String newName = formatTime + last ;
            File newFile = new File(PathKit.getWebRootPath()+"/upload/file/"+newName;            
            upf.getFile().renameTo(newFile));
        }

    }

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JFinal是一款国产的JavaWeb框架,它提供了方便的文件上传功能。在JFinal中,文件上传的流程可以分为四个步骤:引入需要的jar包、创建jsp页面、配置config和编写后台controller处理方法。首先,我们需要引入相关的jar包。然后,创建一个jsp页面,用于用户选择和上传文件。接下来,在config配置中,我们不需要进行xml配置,可以在java类的config类中配置相关信息。最后,在后台controller处理方法中,我们可以通过this.getFile()方法获取上传文件参数,并进行相应的处理。通过这些步骤,我们可以实现JFinal文件上传功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [JFinal框架单文件、多文件上传详解](https://blog.csdn.net/alan_liuyue/article/details/79386540)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [JFinal文件上传](https://blog.csdn.net/Lurk_111/article/details/90167554)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值