getFile文件上传的一个问题

现在的需求是一个文件对应多个附件;我在前台使用了5个附件上传的<input>,后台也可以正常获取数据,

这里需要我将5个附件放在五个不同的文件夹里,所以我随机生成了5个uuid作为文件夹的名称,

通过UploadFile uploadFile1 = getFile("files1", PathKit.getWebRootPath() + "/upload/news/" + uuid1);的方式上传,

但是实际上传的时候,发现实际只创建了uuid1这一个文件夹,5个附件都被上传到了这一个文件夹中,

但是我在debug调试的时候,uuid1-5的值确实都是不同的,

而且在getFile("files1", PathKit.getWebRootPath() + "/upload/news/" + uuid1);里面的uuid1-5也是不同的,

上传到数据库里的路径字段对应的uuid1-5也是不同的(是正确的),

但是uploadFile1-5的saveDirectory属性却都是相同的;QQ图片20201028155812.png

那么在getFile("files1", PathKit.getWebRootPath() + "/upload/news/" + uuid1);上传的时候为什么会上传到同一个文件夹中呢?

评论区

JFinal

2020-10-28 15:48

编辑一下这个反馈,格式化弄得好一些,否则阅读很困难

可直接编辑该贴:
https://jfinal.com/my/feedback

长弓羽

2020-10-28 16:18

我刚刚发现,在getFile("files1", PathKit.getWebRootPath() + "/upload/news/" + uuid1);执行这一步代码的时候,就已经将所有的附件都上传上去了,我不太明白是为什么,我前台的五个input的name属性是files1-5

JFinal

2020-10-28 16:39

@长弓羽 getFile 底层会调用 getFiles, 但只取 "files" 这一个

长弓羽

2020-10-28 16:58

@JFinal 我明白您的意思,getFiles确实只返回了一个uploadFile对象,但是现在确实是执行第一行getFiles方法的时候,所有附件都被上传了,我觉得这和multipart的底层方法有关?而不是getFiles方法的问题

JFinal

2020-10-28 17:04

@长弓羽 @长弓羽 到底是上传了多个还是一个文件?

你希望上传几个?

长弓羽

2020-10-28 17:33

@JFinal 我希望上传五个,然后我在前台写了五个上传文件用的input,name属性是files1-5,后台我调用了getFiles方法五次,但是在第一次调用的时候,就把五个文件都上传了

JFinal

2020-10-28 17:57

@长弓羽 无论上传多少个文件,提交如果只有一次,所有文件都在一个请求之中,所以 getFiles、getFile 都会将这些文件全部解析出来

所以,五个文件全都会被上传,你可以通过 getFiles() 得到这些文件,然后将之使用 File.renameTo(...) 改文件名、转移文件到别的目录

热门反馈

扫码入社