Проблема при попытке загрузить zip / rar файлы с помощью плагина загрузки milesjohnson

#cakephp #plugins

#cakephp #Плагины

Вопрос:

Я новичок в cakephp, и я нашел этот плагин загрузки milesjohnson, и он мне вроде как нравится, в основном потому, что он дает мне возможность переименовать файл после загрузки.К сожалению, я не могу заставить его загружать какие-либо zip / rar-файлы.

Это действие, при котором я загружаю файл:

 function add() {
        if (!empty($this->data)) {

            if ($data = $this->Uploader->upload('link_referencia', array('name' => date("dmYhis")))) {
                 debug($data);
                 $this->data['Publicacione']['link_referencia']=$data['name'];
            }
            $this->Publicacione->create();

            if ($this->Publicacione->save($this->data)) {
                $this->Session->setFlash(__('The publicacione has been saved', true));
                //$this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The publicacione could not be saved. Please, try again.', true));
            }
        }
        $users = $this->Publicacione->User->find('list');
        $this->set(compact('users'));
    }
  

И это ошибка, которую я получаю каждый раз, когда пытаюсь загрузить любой zip / rar-файл :введите описание изображения здесь

Редактировать

Полный запрос на вставку:

 INSERT INTO `publicaciones` (`vigencia`, `tipo`, `titulo`, `descripcion`, `fecha_publicacion`, `fecha_caducidad`, `link_referencia`, `modified`, `created`) VALUES (1, 'c', 'there's nothing you can't do', '
fsdfsdfsdf
', '2011-06-07', '2011-06-30', Array, '2011-06-07 16:47:23', '2011-06-07 16:47:23') 
  

У кого-нибудь есть какие-либо идеи о том, в чем может заключаться проблема?

Заранее спасибо.

Комментарии:

1. Что именно в $data['name'] ? Имя файла в виде строки или массива? Можете ли вы сохранить свои данные, не выполняя загрузку?

2. @vindia- $data — это массив, заполненный значениями для загруженных файлов: размер файла, имя, расширение, mime-группа, путь назначения, время загрузки и ширина / высота (если изображение), и да, я могу сохранить данные, не выполняя загрузку

3. Не могли бы вы, пожалуйста, вставить полный запрос insert из вашего скриншота ошибки?

4. @vindia- Я добавил полный запрос на вставку, пожалуйста, взгляните на него.

5. Единственное, о чем я могу подумать, это то, что $data['name'] это не строка, а массив и поэтому добавляется как Array к вашему INSERT запросу, что вызывает ошибку.

Ответ №1:

я думаю, что в коде, который вы написали, ничего нет, но вам следует заглянуть в плагин и выяснить, дает ли он вам разрешение на загрузку zip или нет.

в вашем плагине будут условия, по которым вы можете загружать только некоторые файлы, такие как jpg, png, txt или что-то в этом роде.

Я надеюсь, что это вам поможет.

С уважением, Archit

Ответ №2:

Вы полностью уверены, что при вводе файла в форму указан тип => файл, и то же самое для вашей формы?

Также я бы посмотрел на другие загрузчики — MeioUpload может разрешать переименование и так далее И является немного более современным. Существует также плагин Cuploadify (uploadify для cake), который вы можете найти на github.

Ответ №3:

Убедитесь, что ваша форма установлена на

составная часть / форма-данные

вот так:

 <?php echo $this->Form->create('File', array('enctype' => 'multipart/form-data')); ?>
  

Следующий код загрузит файл:

 if ($this->request->is('post')) {


    if ( $this->data['File']['file']['error'] <= 0  amp;amp; $this->data['File']['file']['size'] <=   8388608 ) { // Check for no errors and that File size is around 8mb.

    $folder = new Folder (ROOT . DS . 'app' . DS . 'filestorage' . DS, true);  // create folder in /app/filestorage/

    $path = $folder->path . $this->data['File']['file']['name']; // Set path to newly created folder   uploaded file name.

    $tmpUrl = new File ( $this->data['File']['file']['tmp_name'] ); // Create temporary file object

    if ($tmpUrl->copy($path , true) ) { // If copying file to path is successful,

        $this->Session->setFlash(__('File uploaded succesfully!'));   

     }
}