我正在使用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');
}
这适用于单个文件上传。如何根据用户输入调整验证?
答案 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)
}
}