0

私はJoomla2.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つを選択すると、2つの入力フィールドが作成されます。ユーザーが3つを選択すると、3つの入力フィールドが作成されます。私はjqueryを使用してそれを行っています。

私がしたいのは、ユーザーが正しい数のファイルを更新したことを確認するにはどうすればよいですか?

例:ユーザーが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 に答える