【发布时间】:2019-12-30 16:31:37
【问题描述】:
我正在开发一个包含上传文件的任务,在这种情况下,我发现在某些情况下,对$files = $application->input-> files->get('files', [], 'ARRAY'); 的调用返回一个空数组,而$_FILES superglobal 包含文件信息。
我以 JSON 格式显示变量的内容
$_FILES
{
"files": {
"name": ["test.zip"],
"type": ["application/zip"],
"tmp_name": ["/tmp/phpwiA9ch"],
"error": [0],
"size": [2993308]
}
}
$文件
[]
我无法确定原因,我最初在尝试上传 32MB pdf 文件时发现它,我认为这是文件大小问题,但后来我发现它发生在 3MB zip 文件中,我提到在这里,我已经设法上传了其他 zip 文件
我共享媒体设置
合法扩展名(文件类型):zip、bmp、csv、doc、gif、ico、jpg、jpeg、odg、odp、ods、odt、pdf、png、ppt、txt、xcf、xls、ZIP、BMP、 CSV、DOC、GIF、ICO、JPG、JPEG、ODG、ODP、ODS、ODT、PDF、PNG、PPT、TXT、XCF、XLS
最大大小(MB):100MB
合法的 MIME 类型:image / jpeg、image / gif、image / png、image / bmp、application / msword、application / excel、application / pdf、application / powerpoint、text / plain、application / x-zip
如果$files 的内容为空,我认为的解决方案是调用$_FILES。但我很想知道这个错误的原因
这是我正在尝试的代码
public function uploadAttachments()
{
$application = JFactory::getApplication();
$files = $application->input->files->get('files', [], 'ARRAY'); // Here some times is empty
$helper = new Helper();
$response = $helper->uploadAttachments($files);
header('content-type: application/json; charset=utf-8');
echo json_encode($response);
$application->close();
}
【问题讨论】: