jfinal文件上传及其文件重命名

这里需要说明表单的 ENCTYPE="multipart/form-data"属性
含义 ENCTYPE="multipart/form-data" 说明:
通过 http 协议上传文件 rfc1867协议概述,jsp 应用举例,客户端发送内容构造
概述在最初的 http 协议中,没有上传文件方面的功能。 rfc1867 ( http://www.ietf.org/rfc/rfc1867.txt ) 为 http 协议添加了这个功能。客户端的浏览器,如 Microsoft IE, Mozila, Opera 等,按照此规范将用户指定的文件发送到服务器。服务器端的网页程序,如 php, asp, jsp 等,可以按照此规范,解析出用户发送来的文件。Microsoft IE, Mozila, Opera 已经支持此协议,在网页中使用一个特殊的 form 就可以发送文件。绝大部分 http server ,包括 tomcat ,已经支持此协议,可接受发送来的文件。各种网页程序,如 php, asp, jsp 中,对于上传文件已经做了很好的封装。
简单的来说就是设置表单的MIME编码(https://baike.baidu.com/item/MIME/2900607?fr=aladdin),默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,它上传的数据是以二进制的形式来上传.

这里是单个文件上传

直接上代码:
前端

后台代码:

int maxSize = 10 * 1024 * 1024;              //上传文件大小10M
UploadFile  upFile = getFile("file","", maxSize, "utf-8");

第一个参数的对应的前端的name属性,第二个参数对应绝对路径(默认路径在项目上WebRoot建立一个upload文件并把上传文件放在这里,可以在MainConfig中的configConstant中用me.setBaseUploadPath("");来设置路径),第三个参数是上传文件的大小,第四个参数是设置编码方式

接下来是自定义文件名字并保存

//后面的123456.jpg是重命名的文件名
getFile("file").getFile().renameTo(new File("D:\\jfinal_download\\123456.jpg"));

直接使用renameTo()方法来进行更改名字,当然就也可以更改路径

但是如果是多个文件上传的话,可以使用getFiles("")方法来获取,然后在使用循环来重命名和更改路径

你可能感兴趣的:(jfinal文件上传及其文件重命名)