Пехлеви вопрос о переименовании Zend_File_Transfer_Adapter_Http

CLI не нашел приложение «bert-serve-start».

Загляните в папку Python36 / Scripts. Приложение bert-serve-start должно быть там (кроме «pip» и т.

Откройте CLI в этой папке и попробуйте снова.

5
задан leek 3 March 2009 в 20:39
поделиться

6 ответов

На самом деле есть еще более простой способ сделать это. Все, что вам нужно сделать, это передать false в качестве второго параметра для метода getFileName объекта Zend_File_Transfer_Adapter_Http. Затем вы можете переименовать файл, добавив к нему идентификатор пользователя, или проанализировать имя файла, чтобы получить расширение, если хотите.

// upload a file called myimage.jpg from the formfield named "image".

$uploaded_file = new Zend_File_Transfer_Adapter_Http();
$uploaded_file->setDestination('/your/path/');
    try {
        // upload the file
        $uploaded_file->receive();
    } catch (Zend_File_Transfer_Exception $e) {
        $e->getMessage();
    }
$file_name = $uploaded_file->getFileName('image', false);
// this outputs "myimage.jpg"

$file_path = $uploaded_file->getFileName('image');
// this outputs "/your/path/myimage.jpg"

// now use the above information to rename the file
9
ответ дан 18 December 2019 в 09:10
поделиться

Мне удалось сделать это путем устанавливания фильтра. Обратите внимание, что я не устанавливал целевой путь.

$adapter= new Zend_File_Transfer_Adapter_Http();
$adapter->addFilter('Rename',array('target' => WWW_ROOT . '/photos/' . $this->memberId . '.jpg'));

$adapter->receive();
6
ответ дан 18 December 2019 в 09:10
поделиться

Согласно документации, Вы не должны помещать путь в место назначения

текст ссылки

1
ответ дан 18 December 2019 в 09:10
поделиться

существует лучший и более безопасный путь с платформой зенда...

создайте класс помощника для получения расширения файла..

класс ImageUpload {

public function getExtension ($name)
{
    if($name){
    foreach ($name as $val){
        $fname=$val['name'];
      }
    $exts = split("[/\\.]", $fname) ;
    $n = count($exts)-1;
    $exts = $exts[$n];
    return $exts; 
    }

}

}

в контроллере:

класс ProfileController расширяет Zend_Controller_Action {функция indexAction () {$this-> представление-> заголовок = "Профиль"; $this-> представление-> bodyCopy ="

Заполните эту форму.

";
    $form = new ImgForm();

    if ($this->_request->isPost()) {
        $formData = $this->_request->getPost();
        if ($form->isValid($formData)) {
                $adapter = new Zend_File_Transfer_Adapter_Http();
                $adapter->setDestination('images/users/big');

                // getting extension

                $filename = $adapter->getFileInfo();
                $uhelper = new ImageUpload;  // cals for help to get file extension
                $extension = $uhelper->getExtension($filename); // got extension   


                 // success -- file handled

                 //rename
                 $auth = Zend_Auth::getInstance();
                 $identity = $auth->getIdentity();

                 $adapter->addFilter('Rename', array('target' => 'images/users/big/'.$identity->id.'.'.$extension,
                     'overwrite' => true));

                if (!$adapter->receive()) {
                 $form->addError($adapter->getMessages());

                }

        } else {
            $form->populate($formData);
        }
    }

    $this->view->form = $form;

}

когда Ваша форма должна быть:

    parent::__construct($options);
    $this->setName('upload');
    $this->setAttrib('enctype', 'multipart/form-data');


    $file = new Zend_Form_Element_File('file');
    $file->setLabel('File')
          ->addValidator('Count', false, 1)     // ensure only 1 file
          ->addValidator('Size', false, 102400) // limit to 100K
          ->addValidator('Extension' ,false, 'jpg,png,gif') // only JPEG, PNG, and GIFs

          ->setRequired(true);          


    $submit = new Zend_Form_Element_Submit('submit');
    $submit->setLabel('Upload');

    $this->addElements(array($file, $submit));

}

}

Весело провести время

1
ответ дан 18 December 2019 в 09:10
поделиться

Я должен был прервать $ _FILES и внести изменение прежде, чем выполнить вызов к адаптеру

if(isset($_FILES['file1'])){
  $ext = pathinfo($_FILES['file1']['name']);
  $_FILES['file1']['name'] = 'image_'. $userid .'.'.$ext['extension'];
}
$adapter = new Zend_File_Transfer_Adapter_Http();

Я уверен, что существует лучший путь, и я не знаю, почему фильтр не работает, я попробовал все, чтобы заставить его работать. У меня был крайний срок и таким образом, вышеупомянутый код пошел производство LOL

Надежда это помогает кому-то

Eric

0
ответ дан 18 December 2019 в 09:10
поделиться
public function getExtension($name){
    $names= explode(".", $name);
    return $names[count($names)-1];
}
1
ответ дан 18 December 2019 в 09:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: