Przeglądaj źródła

[ZF-8372] Zend_File_Transfer:

- getHash, getMimeType and getFileSize now don't throw an exception on set files when the ignoreNoFile option is set

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@19216 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 lat temu
rodzic
commit
bbf6091c7a

+ 7 - 3
library/Zend/File/Transfer/Adapter/Abstract.php

@@ -1158,7 +1158,7 @@ abstract class Zend_File_Transfer_Adapter_Abstract
                 $result[$key] = hash_file($hash, $value['name']);
             } else if (file_exists($value['tmp_name'])) {
                 $result[$key] = hash_file($hash, $value['tmp_name']);
-            } else {
+            } else if (empty($value['options']['ignoreNoFile'])) {
                 require_once 'Zend/File/Transfer/Exception.php';
                 throw new Zend_File_Transfer_Exception("File '{$value['name']}' does not exist");
             }
@@ -1187,9 +1187,11 @@ abstract class Zend_File_Transfer_Adapter_Abstract
                 $size = sprintf("%u", @filesize($value['name']));
             } else if (file_exists($value['tmp_name'])) {
                 $size = sprintf("%u", @filesize($value['tmp_name']));
-            } else {
+            } else if (empty($value['options']['ignoreNoFile'])) {
                 require_once 'Zend/File/Transfer/Exception.php';
                 throw new Zend_File_Transfer_Exception("File '{$value['name']}' does not exist");
+            } else {
+                continue;
             }
 
             if ($value['options']['useByteString']) {
@@ -1223,9 +1225,11 @@ abstract class Zend_File_Transfer_Adapter_Abstract
                 $file = $value['name'];
             } else if (file_exists($value['tmp_name'])) {
                 $file = $value['tmp_name'];
-            } else {
+            } else if (empty($value['options']['ignoreNoFile'])) {
                 require_once 'Zend/File/Transfer/Exception.php';
                 throw new Zend_File_Transfer_Exception("File '{$value['name']}' does not exist");
+            } else {
+                continue;
             }
 
             if (class_exists('finfo', false)) {

+ 37 - 0
tests/Zend/File/Transfer/Adapter/AbstractTest.php

@@ -686,6 +686,13 @@ class Zend_File_Transfer_Adapter_AbstractTest extends PHPUnit_Framework_TestCase
         }
     }
 
+    public function testIgnoreHashValue()
+    {
+        $this->adapter->addInvalidFile();
+        $return = $this->adapter->getHash('crc32', 'test');
+        $this->assertEquals(array(), $return);
+    }
+
     public function testEmptyTempDirectoryDetection()
     {
         $this->adapter->_tmpDir = "";
@@ -716,6 +723,13 @@ class Zend_File_Transfer_Adapter_AbstractTest extends PHPUnit_Framework_TestCase
         }
     }
 
+    public function testIgnoreFileSize()
+    {
+        $this->adapter->addInvalidFile();
+        $return = $this->adapter->getFileSize('test');
+        $this->assertEquals(array(), $return);
+    }
+
     public function testFileSizeByTmpName()
     {
         $options = $this->adapter->getOptions();
@@ -737,6 +751,13 @@ class Zend_File_Transfer_Adapter_AbstractTest extends PHPUnit_Framework_TestCase
         }
     }
 
+    public function testIgnoreMimeType()
+    {
+        $this->adapter->addInvalidFile();
+        $return = $this->adapter->getMimeType('test');
+        $this->assertEquals(array(), $return);
+    }
+
     public function testMimeTypeByTmpName()
     {
         $this->assertEquals('text/plain', $this->adapter->getMimeType('baz.text'));
@@ -895,6 +916,22 @@ class Zend_File_Transfer_Adapter_AbstractTest_MockAdapter extends Zend_File_Tran
     {
         return parent::_isPathWriteable($path);
     }
+
+    public function addInvalidFile()
+    {
+        $this->_files += array(
+            'test' => array(
+                'name'      => 'test.txt',
+                'type'      => 'image/jpeg',
+                'size'      => 0,
+                'tmp_name'  => '',
+                'options'   => array('ignoreNoFile' => true, 'useByteString' => true),
+                'validated' => false,
+                'received'  => false,
+                'filtered'  => false,
+            )
+        );
+    }
 }
 
 // Call Zend_File_Transfer_Adapter_AbstractTest::main() if this source file is executed directly.