0

我正在使用 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 -> 应该有 2 个文件上传,如果用户选择 3 -> 应该有 3 个文件上传

目前我正在做的是使用 PHP 是

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

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

4

2 回答 2

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...
    )
)
于 2012-10-15T15:21:04.863 回答
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)
    }
 }
于 2012-10-16T03:49:02.633 回答