Codeigniter 3.0, Вы не выбрали файл для загрузки - PullRequest
0 голосов
/ 22 июня 2019

Я проследил за всеми ответами, доступными в Интернете по этой теме, после 4 часов поиска и попытки все еще не увенчались успехом .. ?

Вышла ошибка Вы не выбрали файл для загрузки.


РЕДАКТИРОВАТЬ

Пробовал тоже методом $_FILES.


Я попытался if($this->input->post('userfile')!==null)

, чтобы проверить, передается ли изображение в контроллер или нет, и оказывается, что это не так, как если бы условие не было выполнено.

Я следовалЭто руководство по загрузке файлов на сервер.

https://www.codeigniter.com/user_guide/libraries/file_uploading.html?highlight=file%20upload

Не знаю, в чем проблема.

. Код можно найти по ссылке выше.

my .htaccess file

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]



EDIT:

Я испробовал все предложения, которые выребята предоставили.

Да, я ошибся, проверив изображение через $ _POST вместо $ _FILES

Но проблема все та же.Я публикую код, который я использую, и URL, который вы также можете проверить.

Любая помощь будет принята с благодарностью.

ImageUploadController.php

<?php

 class ImageUploadController extends CI_Controller {

    public function __construct()
    {
            parent::__construct();
            $this->load->helper(array('form', 'url'));
    }

    public function index()
    {
            $this->load->view('image-upload/upload_form', array('error' => ' ' ));
    }

    public function store($workType)
    {


            $config['upload_path']          = './assets/';
            $config['allowed_types']        = 'gif|jpg|png';
            $config['max_size']             = 100;
            $config['max_width']            = 1024;
            $config['max_height']           = 768;

            $this->load->library('upload', $config);

            if ( ! $this->upload->do_upload('imageFile'))
            {
                if(isset($_FILES['imageFile']))  
                    echo "isset";

                    $error = array('error' => $this->upload->display_errors());

                    $this->load->view('image-upload/upload_form', $error);
            }
            else
            {
                    $data = array('upload_data' => $this->upload->data());

                    $this->load->view('image-upload/upload_success', $data);
            }
    }
}
?>

upload_form.php

https://gist.github.com/VickySalunkhe/1dc66ec6d3af8cf097a5c01b5009c804

upload_result.php

https://gist.github.com/VickySalunkhe/691626e4fe6dd8a8b3896d210e4b22b9

Маршрут установлен для запроса

$route['upload'] = 'ImageUploadController';
//stores the images on server
$route['store/(:any)'] = 'ImageUploadController/store/$1';

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

Ответы [ 4 ]

0 голосов
/ 24 июня 2019

Вид:

<?php echo form_open_multipart('updateFunctionName');?>

<div class="col-md-6">
  <div class="form-group">
    <label for="artworkpath">Artwork</label>
    <input type="file" class="form-control" id="artworkpath" name="artworkpath" value="<?php echo $artworkpath; ?>">
  </div>
</div>

</form>

Контроллер:

function updateFunctionName(){
    $artworkpath = $this->input->post('artworkpath');

    $CheckFileName = true;
    if ($_FILES['artworkpath']['size'] == 0 && $_FILES['artworkpath']['error'] == 0)
    {
    $CheckFileName = false;
    }
    else
    {
    $filename2 = 'Artwork_'.rand(0,999999);

    if( ! is_dir('uploads') ){mkdir('uploads',0777,TRUE); };      
    $path='uploads/';        
    $imgtmpname=$_FILES['artworkpath']['tmp_name'];
    $name = $_FILES["artworkpath"]["name"];
    $ext = end((explode(".", $name)));
    $fullpath= $path .$filename2.'.'.$ext;
    $filename = $filename2;
    move_uploaded_file($imgtmpname,$fullpath);
    }

В БД сохраните данные этой переменной в столбце:

    $Info = array();
    if ($ext <> '')
    {
    $Info = array('artworkpath'=>$fullpath, //other fields);
    }
    else
    {
    $Info = array(//other fields);
    }
    $this->user_model->updateRecord($Info, $Id);
}

Модель:

function updateRecord($Info, $Id)
{
    $this->db->where('Id', $Id);
    $this->db->update('tablename', $Info);
}
0 голосов
/ 23 июня 2019

Попробуйте Blow Code

1) HTML:

<form action="/profile_upload" method="post" enctype="multipart/form-data">
  <input type="file" name="file">
  <input type="submit" value="Submit">
</form>

2) PHP-файл:

if($_FILES['file']['name']!='')  {
    $config['upload_path'] = './uploads/admin/big';
    $config['allowed_types'] = 'gif|jpg|png|jpeg';
    $config['max_size'] = '10240';
    $config['encrypt_name'] = TRUE;
    $this->load->library('upload', $config);

    if (!$this->upload->do_upload('file')) {
        // ERROR
        $error = array('error' => $this->upload->display_errors());
    } 
    else {
        // SUCCESS
        $file_name = $this->upload->file_name;
    }
}
0 голосов
/ 23 июня 2019
  1. Проверьте атрибут enctype формы, например,

  2. проверьте переменную $ _FILES пустым или нет.

0 голосов
/ 22 июня 2019

Для загрузки файла в CodeIgniter 3 я рекомендую использовать класс выгрузки файлов.

Ссылку вы найдете здесь: Загрузка файлов в CodeIgniter

Для чегоЯ вижу, это то, что вы использовали выше.

В документации говорится, что вы должны сначала загрузить библиотеку загрузки с некоторыми настройками конфигурации (см. Документы):

$this->load->library('upload', $config)

А затем метод, которыйвыполняет ли фактическая загрузка (на основе параметров конфигурации) следующее:

$this->upload->do_upload('<your-file-name>');

Обратите внимание, где указано, что вы должны использовать имя файла, который вы загружаете с помощью HTML.Сам файл не найден в массиве POST, но в массиве FILES каждый раз, когда вы загружаете файл, используя элемент HTML <input type="file">.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...