为什么在使用 JInputFiles 检索文件数据时有时会得到一个空数组?
why when retrieving file data using JInputFiles sometimes get an empty array?
我正在开发一个包含上传文件的任务,在这种情况下,我发现在某些情况下,对 $files = $application->input-> files->get('files', [], 'ARRAY');
returns 的调用是一个空数组,而 $_FILES
超全局包含文件信息。
我用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();
}
调用$application->input->files-> get('files', [], 'ARRAY');
时得到的是一个空数组是因为在JInputFiles
class的get
方法中会校验文件是否为安全,验证是在静态方法 isSafeFile
中完成的,在尝试一系列验证后,如果某些条件未通过,则 false 将 return,因此方法 get
将 return 我的默认值是一个空数组。
对于我正在测试的文件,它是因为它标识了扩展名 pl
,它被标记为:'These are suspicious text files which may have an executable'
JInputFile class
我正在开发一个包含上传文件的任务,在这种情况下,我发现在某些情况下,对 $files = $application->input-> files->get('files', [], 'ARRAY');
returns 的调用是一个空数组,而 $_FILES
超全局包含文件信息。
我用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();
}
调用$application->input->files-> get('files', [], 'ARRAY');
时得到的是一个空数组是因为在JInputFiles
class的get
方法中会校验文件是否为安全,验证是在静态方法 isSafeFile
中完成的,在尝试一系列验证后,如果某些条件未通过,则 false 将 return,因此方法 get
将 return 我的默认值是一个空数组。
对于我正在测试的文件,它是因为它标识了扩展名 pl
,它被标记为:'These are suspicious text files which may have an executable'
JInputFile class