多文件上传验证 - PHP,Joomla

时间:2012-10-15 15:17:30

标签: php file-upload joomla joomla2.5

我正在使用Joomla 2.5。

我的程序中有3个输入字段,允许用户上传类似的设计图像。

<input type="file" name="design_image[]" class="image_upload" accept="image/*"/>
<input type="file" name="design_image[]" class="image_upload" accept="image/*"/>
<input type="file" name="design_image[]" class="image_upload" accept="image/*"/>

以上3个输入字段是动态的。有一个下拉列表,允许用户确定要上载的设计数量。如果用户选择两个,则创建2个输入字段。如果用户选择三个,则创建3个输入字段。我是用jquery做的。

我想要做的是如何确保用户更新了正确数量的文件?

EG:如果用户选择两个 - >应该有2个文件上传, 如果用户选择三个 - >应该上传3个文件

目前我正在做的是使用PHP

$file = JRequest::getVar('design_image', null, 'files', 'array');
if(empty($file['tmp_name'])){
            $this->_app->enqueueMessage( JText::_('Error'), 'error');
} 

这适用于单个文件上传。如何根据用户输入调整验证?

2 个答案:

答案 0 :(得分:1)

PHP的基于数组的文件上传支持有一种构建$ _FILES数组的模式。

普通单个文件:

$_FILES = array(
    'fieldname_in_file_input' => array(
        'name' => 'somefile.txt'
        'size' => 12345
        'error' => 0
        etc...
    )
);

基于阵列的:

$_FILES = array(
   'fieldname_in_file_input' => array(
       'name' => array(
           0 => 'first_file.txt';
           1 => 'second_file.txt'
           etc..
       ),
       'size' =>
           0 => 1234, // size of 1st file
           1 => 2345, // size of 2nd file
           etc...
       ), etc...
    )
)

答案 1 :(得分:0)

试试这个

$file = JRequest::getVar('design_image', null, 'files', 'array');

if(empty($file['tmp_name'][0])){
       $this->_app->enqueueMessage( JText::_('Error'), 'error');
}

上传

$count = count($file['name']);
for($i=0;$i<$count;$i++) {
 if($file['error'][$i] == 0)
 {
    if($file['size'][$i] <= 8388608)   //8388608 byte = 8 mb
    {
       JFile::upload($file['tmp_name'][$i],$your_new_path)
    }
 }