在实际项目中,经常会遇到文件上传的功能。这其中,就有一种情况,就是有多个文件上传的模块,有的是单文件上传,而有的则需要多文件上传。那么在多文件上传的input中,需要name值的最后是以“[]”来结尾,比如<input type="file" name="pics[]" multiple>。其中的“multiple”代表的是该input可以选择多个文件,但这个不是本文的重点,本文的重点,是前面的这个“name”。
上示例代码,如下图:
![代码1](https://img-blog.csdnimg.cn/20200729102907709.png)
在上面例子的情况下,点击提交按钮,你会发现,后台只会收到name是pic的这个input的值,而后面那个多文件上传的“pics[]”input中选中的文件,一个都没上传。原因是,name中带“[]”则说明这个参数会以数组的形式传输,而不带的,则以字符串的形式传输。而这两个都是文件上传input,却分为了两种形式传输,在后台接受文件上传的方法,只有一个。默认是接受单文件上传的格式,所以,后面的以数组形式上传的文件,直接被忽略了。因此,此时应该在上面name=“pic”中,也加入“[]”,即可解决问题。只要不加“multiple”,它还是单文件上传,只是改变了数据格式。
总结,在这种单文件和多文件混用上传的情况下,需要统一在name中加上“[]”。如哪位大神发现我的说法错误或有别的办法解决的(再此只说用form的形式上传),请指导。
记一次,thinkphp上传文件,部分input中的文件无法上传的问题
最新推荐文章于 2022-11-13 17:14:27 发布