Zend framework Zend文件多次上传,可访问不同的文件名

Zend framework Zend文件多次上传,可访问不同的文件名,zend-framework,file-upload,zend-file,Zend Framework,File Upload,Zend File,我使用Zend Framework 1.12实现一些文件上传系统。并使用Zend_File_Transfer_Adapter_Http的一种形式,用于上传两个文件。 这两个文件有两个表单元素 $file1 = new Zend_Form_Element_File('file1'); // other options like setLabel etc. $this->addElement($file1, 'file1'); $file2 = new Zend_Form_Element_F

我使用Zend Framework 1.12实现一些文件上传系统。并使用Zend_File_Transfer_Adapter_Http的一种形式,用于上传两个文件。 这两个文件有两个表单元素

$file1 = new Zend_Form_Element_File('file1');
// other options like setLabel etc.
$this->addElement($file1, 'file1');

$file2 = new Zend_Form_Element_File('file2');
// other options like setLabel etc.
$this->addElement($file2, 'file2');
我在控制器中处理上传过程如下:

if ($request->isPost()) {
                    if ($form->isValid($request->getPost())) {

                        $adapter = new Zend_File_Transfer_Adapter_Http();
                        $adapter->setDestination($dirname);
                        $files = $adapter->getFileInfo();

                        foreach ($files as $file => $fileInfo) {


                            if (!$adapter->receive($file)) {
                                $messages = $adapter->getMessages();
                                echo implode("\n", $messages);
                            } else {
                                $location = $adapter->getFileName($file, true);
                                $filename = $adapter->getFileName($file, false);


                               // taking location and file names to save in database..
                            }
                        }
                    }

有了这些,我可以管理两个文件的上传。但我不知道如何确定上传了特定Zend_Form_元素_文件的文件的位置。例如,我需要知道哪个文件被上传到$file1(表单中的元素),我将把它的位置保存到数据库中的一个表中,哪个文件被上传到$file2并把它的位置保存到另一个表中。

我不喜欢使用Zend\u file\u Transfer\u Adapter\u Http。 我更喜欢使用这样的代码:

if ($request->isPost()) {
                    if ($form->isValid($request->getPost())) {

                        $adapter = new Zend_File_Transfer_Adapter_Http();
                        $adapter->setDestination($dirname);
                        $files = $adapter->getFileInfo();

                        foreach ($files as $file => $fileInfo) {


                            if (!$adapter->receive($file)) {
                                $messages = $adapter->getMessages();
                                echo implode("\n", $messages);
                            } else {
                                $location = $adapter->getFileName($file, true);
                                $filename = $adapter->getFileName($file, false);


                               // taking location and file names to save in database..
                            }
                        }
                    }
在application.ini中:

data_tmp = APPLICATION_PATH "/../data/tmp"
在引导中:

$options = $this->getOptions();
define('DATA_TMP', $options['data_tmp']);
形式:

$elementFoo = new Zend_Form_Element_File('foo');
$elementFoo->setLabel('Upload File 1:')->setDestination(DATA_TMP);

$elementBar = new Zend_Form_Element_File('bar');
$elementBar->setLabel('Upload File 2:')->setDestination(DATA_TMP);
在控制器中:

if ($request->isPost()) {
    if ($form->isValid($request->getPost())) {
       $values = $form->getValues();
       $filenameFoo = $values['foo'];
       $filenameBar = $values['bar'];
       //at this point you know the name of the individual filename
       $filePathFoo = DATA_TMP . DIRECTORY_SEPARATOR . $filenameFoo;
       $filePathBar = DATA_TMP . DIRECTORY_SEPARATOR . $filenameBar;
       //now you have even the physical path of the files

       // taking location and file names to save in database..
    }
}
我的2美分