Post数组未存储文件输入:PHP多图上传后$_POST无提交图片数据
问题原因及解决方法
- 首先明确PHP中文件上传数据的存储位置:上传的文件信息不会出现在
$_POST数组中,全部存储在$_FILES全局变量里,你当前只打印$_POST自然看不到图片相关数据,修改你的PHP代码同时打印两个超全局变量即可验证:
if ( $mode == 'dati' ) { var_dump($_POST); var_dump($_FILES); die(); }
- 如果修改后
$_FILES为空,同时$_POST也没有任何表单数据,大概率是上传的总文件大小超过了MAMP环境的PHP配置限制,你可以检查php.ini中以下参数的数值,调大到符合你的上传需求:upload_max_filesize:单文件最大上传大小post_max_size:POST请求总数据最大限制,这个数值需要大于upload_max_filesize乘以你允许的最多上传数量max_file_uploads:单次请求最多允许上传的文件数量
修改配置后需要重启MAMP生效。
- 额外的前端优化建议:你当前的预览逻辑没有判断选中文件的数量,如果用户选中的文件少于3张,直接访问
this.files[1]、this.files[2]会抛出JS错误,不会影响表单提交但会导致控制台报错,建议补充对应存在性判断。
内容的提问来源于stack exchange,提问作者user16136866
相关产品推荐
相关产品推荐

