diff --git a/library/Zend/File/Transfer/Adapter/Http.php b/library/Zend/File/Transfer/Adapter/Http.php index 2265e4ff1a..69cfdd357c 100644 --- a/library/Zend/File/Transfer/Adapter/Http.php +++ b/library/Zend/File/Transfer/Adapter/Http.php @@ -446,6 +446,9 @@ protected function _prepareFiles() $this->_files[$form]['name'] = $form; foreach($this->_files[$form]['multifiles'] as $key => $value) { + if ($this->_files[$value]['tmp_name'] !== '') { + $this->_files[$value]['name'] = basename($this->_files[$value]['tmp_name']) . '_' . $this->_files[$value]['name']; + } $this->_files[$value]['options'] = $this->_options; $this->_files[$value]['validated'] = false; $this->_files[$value]['received'] = false; @@ -464,6 +467,9 @@ protected function _prepareFiles() } } else { $this->_files[$form] = $content; + if ($this->_files[$form]['tmp_name'] !== '') { + $this->_files[$form]['name'] = basename($this->_files[$form]['tmp_name']) . '_' . $this->_files[$form]['name']; + } $this->_files[$form]['options'] = $this->_options; $this->_files[$form]['validated'] = false; $this->_files[$form]['received'] = false; diff --git a/tests/Zend/File/Transfer/Adapter/HttpTest.php b/tests/Zend/File/Transfer/Adapter/HttpTest.php index bb457b4397..00ec10ac2d 100644 --- a/tests/Zend/File/Transfer/Adapter/HttpTest.php +++ b/tests/Zend/File/Transfer/Adapter/HttpTest.php @@ -66,11 +66,13 @@ public function setUp() { $_FILES = array( 'txt' => array( - 'name' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'test.txt', + 'name' => 'test.txt', 'type' => 'plain/text', 'size' => 8, - 'tmp_name' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'test.txt', - 'error' => 0)); + 'tmp_name' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'php0zgByO', + 'error' => 0 + ) + ); $this->adapter = new Zend_File_Transfer_Adapter_HttpTest_MockAdapter(); } @@ -87,7 +89,7 @@ public function tearDown() public function testEmptyAdapter() { $files = $this->adapter->getFileName(); - $this->assertContains('test.txt', $files); + $this->assertContains('php0zgByO_test.txt', $files); } public function testAutoSetUploadValidator() @@ -194,19 +196,57 @@ public function testReceiveWithRenameFilterButWithoutDirectory() $this->assertTrue($this->adapter->receive()); } + public function testMultiFiles() { $_FILES = array( 'txt' => array( - 'name' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'test.txt', + 'name' => 'test.txt', + 'type' => 'plain/text', + 'size' => 8, + 'tmp_name' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'php0zgByO', + 'error' => 0 + ), + 'exe' => array( + 'name' => array( + 0 => 'file1.exe', + 1 => 'file2.exe'), + 'type' => array( + 0 => 'plain/text', + 1 => 'plain/text'), + 'size' => array( + 0 => 8, + 1 => 8), + 'tmp_name' => array( + 0 => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'phpqBXGTg', + 1 => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'phpZqRDQF'), + 'error' => array( + 0 => 0, + 1 => 0))); + $adapter = new Zend_File_Transfer_Adapter_HttpTest_MockAdapter(); + $adapter->setOptions(array('ignoreNoFile' => true)); + $this->assertTrue($adapter->receive('exe')); + $this->assertEquals( + array('exe_0_' => 'phpqBXGTg_file1.exe', + 'exe_1_' => 'phpZqRDQF_file2.exe'), + $adapter->getFileName('exe', false)); + } + + + public function testMultiFilesSameName() + { + $_FILES = array( + 'txt' => array( + 'name' => 'test.txt', 'type' => 'plain/text', 'size' => 8, - 'tmp_name' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'test.txt', - 'error' => 0), + 'tmp_name' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'php0zgByO', + 'error' => 0 + ), 'exe' => array( 'name' => array( - 0 => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'file1.txt', - 1 => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'file2.txt'), + 0 => 'file.exe', + 1 => 'file.exe'), 'type' => array( 0 => 'plain/text', 1 => 'plain/text'), @@ -214,8 +254,8 @@ public function testMultiFiles() 0 => 8, 1 => 8), 'tmp_name' => array( - 0 => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'file1.txt', - 1 => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'file2.txt'), + 0 => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'phpOOwDDc', + 1 => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'phpDlIxkx'), 'error' => array( 0 => 0, 1 => 0))); @@ -223,8 +263,8 @@ public function testMultiFiles() $adapter->setOptions(array('ignoreNoFile' => true)); $this->assertTrue($adapter->receive('exe')); $this->assertEquals( - array('exe_0_' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'file1.txt', - 'exe_1_' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'file2.txt'), + array('exe_0_' => 'phpOOwDDc_file.exe', + 'exe_1_' => 'phpDlIxkx_file.exe'), $adapter->getFileName('exe', false)); } diff --git a/tests/Zend/File/Transfer/Adapter/_files/file2.txt b/tests/Zend/File/Transfer/Adapter/_files/file2.txt deleted file mode 100644 index e7cbb71a0d..0000000000 --- a/tests/Zend/File/Transfer/Adapter/_files/file2.txt +++ /dev/null @@ -1 +0,0 @@ -testfile \ No newline at end of file diff --git a/tests/Zend/File/Transfer/Adapter/_files/file1.txt b/tests/Zend/File/Transfer/Adapter/_files/php0zgByO similarity index 100% rename from tests/Zend/File/Transfer/Adapter/_files/file1.txt rename to tests/Zend/File/Transfer/Adapter/_files/php0zgByO diff --git a/tests/Zend/File/Transfer/Adapter/_files/phpDlIxkx b/tests/Zend/File/Transfer/Adapter/_files/phpDlIxkx new file mode 100644 index 0000000000..26918572ec --- /dev/null +++ b/tests/Zend/File/Transfer/Adapter/_files/phpDlIxkx @@ -0,0 +1 @@ +testfile diff --git a/tests/Zend/File/Transfer/Adapter/_files/phpOOwDDc b/tests/Zend/File/Transfer/Adapter/_files/phpOOwDDc new file mode 100644 index 0000000000..26918572ec --- /dev/null +++ b/tests/Zend/File/Transfer/Adapter/_files/phpOOwDDc @@ -0,0 +1 @@ +testfile diff --git a/tests/Zend/File/Transfer/Adapter/_files/phpZqRDQF b/tests/Zend/File/Transfer/Adapter/_files/phpZqRDQF new file mode 100644 index 0000000000..26918572ec --- /dev/null +++ b/tests/Zend/File/Transfer/Adapter/_files/phpZqRDQF @@ -0,0 +1 @@ +testfile diff --git a/tests/Zend/File/Transfer/Adapter/_files/phpqBXGTg b/tests/Zend/File/Transfer/Adapter/_files/phpqBXGTg new file mode 100644 index 0000000000..26918572ec --- /dev/null +++ b/tests/Zend/File/Transfer/Adapter/_files/phpqBXGTg @@ -0,0 +1 @@ +testfile diff --git a/tests/Zend/File/Transfer/Adapter/_files/test.txt b/tests/Zend/File/Transfer/Adapter/_files/test.txt index e7cbb71a0d..26918572ec 100644 --- a/tests/Zend/File/Transfer/Adapter/_files/test.txt +++ b/tests/Zend/File/Transfer/Adapter/_files/test.txt @@ -1 +1 @@ -testfile \ No newline at end of file +testfile