#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!'));
}
}