关于文件上传getFile()的一点小疑惑求解答

    请教个问题,UpLoad.getFile()方法是直接上传文件到config指定的路径的,并且不调用getFile()就无法使用getPara(),那就有一个问题,如果我需要先调用getPara()获取参数再getFile(String parameterName, String uploadPath) 设置保存路径以及文件名(细分文件存储)应该怎么做呢

评论区

刘方杰

2018-04-28 11:05

你可以看看俱乐部的上传代码。
解决思路其实很简单:getFile和getPara调用顺序这个限制只针对form表单数据,对url参数没有影响,你只需要把参数放到url中就可以了。

白吃小菜

2018-04-28 14:21

@刘方杰 是先在js里获取参数然后上传确定路径吗,我用的layui封装的上传控件估计是用的表单数据先用getPara不行,取不到值

刘方杰

2018-04-28 15:38

http://www.layui.com/doc/modules/upload.html
layui支持上传接口额外参数data,你可以试试

JFinal

2018-04-29 10:44

@白吃小菜 你可以先通过 getFile() 得到 UploadFile 对象,再 getPara 得到你想要的参数

最后通过 uploadFile.getFile().renameTo(new File(path)) 将文件移动到你想要的目录

这个并不是 jfinal 要这样做,而是文件上传请求是 multipart request,这种格式的请求中的参数是需要先解析才能得到参数,而解析就必须将解析的结果存放在文件名内存中

最后这个问题就成了,不先解析就得不到参数,先解析就得将解析结果先放一个地方,将解析结果先放一个地方就要决定要文件保存在一个地方

使用别的 web 框架,不会要求你调用 getFile, 而是会自动帮你解析并存放文件到某个地方,仍然是无法实现你的需求

jfinal 的实现可以让你决定 getFile 时将文件保存在哪里,比别的 web 框架多个功能

白吃小菜

2018-04-30 15:06

@JFinal 谢谢波总耐心解答,做毕设用的JFinal,真的挺好用的

白吃小菜

2018-04-30 15:07

@刘方杰 这个貌似额外参数也是封装的,直接调getPara也是拿不到的,不过谢谢你的耐心解答

JFinal

2018-05-01 12:33

@白吃小菜 好多学生用 jfinal 做毕业设计,明智的选择

白吃小菜

2018-05-02 16:35

@JFinal 波总,我又回来求救了,file.renameTo(new File(endPath))这个方法中endpath="E:/hw/2"会自动生成2文件夹并把文件存入,但第二个文件再调用这个方法时会失败,文件还是在getFile()根目录中,如果写成file.renameTo(new File(endPath+"/"+filename))则会在2目录下再创建一个与文件同名的文件夹并把文件存入,会多一层文件夹,我是想把所有上传的文件存入2中,我不知道为什么会有这样的问题以及如何去解决,求波总回复!!!

JFinal

2018-05-03 12:00

@白吃小菜 纯 Java API 使用问题,与 jfinal 无关,找点 java 基础资料复习一下

热门反馈

扫码入社