PHP中如何获取同名Content-Disposition的多文件上传内容?
如何在PHP中获取同名Content-Disposition的多文件上传?
要解决PHP中只能获取到最后一个同名name的上传文件问题,无需解析php://input的话,核心是调整PHP的上传处理配置,以下是具体方案:
方法1:启用upload_arrays配置(推荐)
PHP 7.1及以上版本提供了upload_arrays配置项,默认处于关闭状态。开启后,PHP会自动将所有同名的上传文件整理为数组结构,而非覆盖保留最后一个。
配置方式
- 全局配置:在
php.ini文件中添加或修改:
修改后需要重启PHP服务生效。upload_arrays = On - 脚本内动态配置:如果服务器允许动态修改配置,可在脚本开头添加:
ini_set('upload_arrays', 1);
效果示例
启用后,$_FILES['images']会变为二维数组,包含所有上传文件的信息:
Array ( [name] => Array ( [0] => file1.jpg [1] => file2.jpg [2] => file3.jpg ) [type] => Array ( [0] => image/jpeg [1] => image/jpeg [2] => image/jpeg ) [tmp_name] => Array ( [0] => /tmp/phpXXXX.tmp [1] => /tmp/phpYYYY.tmp [2] => /tmp/phpZZZZ.tmp ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [size] => Array ( [0] => 57728 [1] => 60000 [2] => 55000 ) )
你可以通过循环遍历数组来逐个处理每个上传文件。
注意事项
- 版本限制:
upload_arrays仅在PHP 7.1及以上版本可用,若你的PHP版本低于此,需考虑升级PHP,或只能通过解析php://input来处理(但这不符合你“不解析原始输入”的要求)。 - 权限限制:部分服务器的安全配置可能禁用了
ini_set修改upload_arrays,这种情况下需要联系服务器管理员调整全局php.ini配置。
内容的提问来源于stack exchange,提问作者SpacemanScott
相关产品推荐
相关产品推荐

