Я использую Dropzone в своем проекте CI. Однако я не могу управлять им, и мои файлы не загружаются. Он даже не передает имя изображения в переменную, так как при вставке базы данных дает NULL.
Вот мой взгляд:
<div id = "dropzone" class = "dropzone"></div>
<script type = "text/javascript">
Dropzone.autoDiscover = false;
var base_url = "<?php echo base_url();?>";
$("div#dropzone").dropzone({
url: base_url + 'cars/addpic',
addRemoveLinks: true,
uploadMultiple: true,
paramName: "files",
acceptedFiles: "image/*",
dictDefaultMessage: "<span class='mif-file-upload mif-3x'></span> <br>Faykkari sechin gorek"
});
</script>
Вот мой контроллер:
public function addpic() {
$config['upload_path'] = './assets/img/cars/';
$config['allowed_types'] = 'jpg|png|jpeg|JPG|PNG|JPEG';
$config['overwrite'] = FALSE;
$config['remove_spaces'] = TRUE;
$config['max_size'] = '25000';
$this->load->library('upload', $config);
$this->upload->initialize($config);
if ($this->upload->do_upload('files'))
{
//for multiple
$filesCount = count($_FILES['files']['name']);
for($i = 0; $i < $filesCount; $i++){
$_FILES['filee']['name'] = $_FILES['files']['name'][$i];
$_FILES['filee']['type'] = $_FILES['files']['type'][$i];
$_FILES['filee']['tmp_name'] = $_FILES['files']['tmp_name'][$i];
$_FILES['filee']['error'] = $_FILES['files']['error'][$i];
$_FILES['filee']['size'] = $_FILES['files']['size'][$i];
if (!$this->upload->do_upload('filee')){
$manyimages = '';
} else {
$fileData = $this->upload->data();
$manyimages[] = $fileData['file_name'];
}
}
$manymanyimages= implode(',', $manyimages);
}
а затем я передаю эти данные в основную функцию, где все данные загружаются в базу данных.
public function create($manymanyimages) {
//some other stuff here
$data = array(
'photos' => $manymanyimages
);
$this->cars_model->add_car($data);
redirect('');
}
Я также никогда не видел do_upload(), вложенного в do_upload() - я не верю, что это сработает - и не назначал массив $ _FILES






Попробуйте этот код; Я думаю, что ваша основная проблема заключалась во вложенном do_upload() и неправильной обработке ошибок dz.
$config['upload_path'] = './assets/img/cars/';
$config['allowed_types'] = 'jpg|png|jpeg|JPG|PNG|JPEG';
$config['overwrite'] = FALSE;
$config['remove_spaces'] = TRUE;
$config['max_size'] = '25000';
$this->load->library('upload', $config);
$manyimages = array();
$filesCount = count($_FILES['files']['name']);
for ($i = 0; $i < $filesCount; $i++) {
$_FILES['filee']['name'] = $_FILES['files']['name'][$i];
$_FILES['filee']['type'] = $_FILES['files']['type'][$i];
$_FILES['filee']['tmp_name'] = $_FILES['files']['tmp_name'][$i];
$_FILES['filee']['error'] = $_FILES['files']['error'][$i];
$_FILES['filee']['size'] = $_FILES['files']['size'][$i];
if (!$this->upload->do_upload('filee')) {
$this->output->set_status_header(500);
$this->output->set_output(strip_tags($this->upload->display_errors()));
} else {
$fileData = $this->upload->data();
$manyimages[] = $fileData['file_name'];
}
}
$manymanyimages = implode(',', $manyimages);
echo $manymanyimages;
Теперь он работает для отправки фотографий, но по-прежнему не передает имена другой функции :(
ну, вы никогда не включали это в свой код ... мой код и ваш код заканчиваются в одной точке ... поэтому я не уверен, как вы хотите, чтобы я это понял.
На самом деле изображения загружаются в папку ./assets/img/cars/. Однако я не могу получить $ manymanyimages из другой функции.
еще раз: вы получаете ваши изображения эхом через echo $manymanyimages; ??
важно видеть, что мы получаем там правильный результат
ты имеешь ввиду имена?
да, это эхо, как вы ожидаете? что такое var_dump этой переменной в функции addpic ()
$manymanyimages = implode(',', $manyimages); echo $manymanyimages; перекликается с чем-то, что вам просто нужно знать, где искать. например панель сети и щелкните запрос ajax, а затем найдите кнопку предварительного просмотра ... это действительно базовые вещи
Я сделал это, и это перекликается с именами файлов. mega.nz/#!e1ZDmQgC!XLxonlGzWAWwH0GqWO1WR_EoqSopAQ7Ll7FgsLgDT 9M вот скриншот
Хотел бы я помочь тебе, чувак, я просто не вижу причин для слишком малого количества ошибок в аргументах. возможно, отправьте свой полный контроллер.
Совет: вы используете инициализацию $ config дважды
$this->upload->initialize($config);. Необходимо использовать только$this->load->library('upload', $config);.