Проверить, будет ли загружен файл?CodeIgniter - PullRequest
4 голосов
/ 14 февраля 2012

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

Я пробовал что-то вроде этого:

$upld_file = $this->upload->data();
    if(!empty($upld_file)) 
    {
    //Upload file
    }

Ответы [ 2 ]

6 голосов
/ 14 февраля 2012

вы используете класс загрузчика файлов codeigniter ... и вызываете $this->upload->do_upload(); в условном выражении, а затем проверяете, истинно ли оно.

<?php 
if ( ! $this->upload->do_upload()){
    $error = array('error' => $this->upload->display_errors());
    $this->load->view('upload_form', $error);
}
else{
    $data = array('upload_data' => $this->upload->data());
    $this->load->view('upload_success', $data);
}

User_guide объясняет это подробно: http://codeigniter.com/user_guide/libraries/file_uploading.html

Тем не менее, если вы не уверены в том, был ли файл "загружен", то есть .. передан ДО того, как вы вызовете этот класс (не знаю, почему). Вы можете получить доступ к PHP $_FILES super global .. и использовать условное выражение, чтобы проверить, равен ли размер> 0.

http://www.php.net/manual/en/reserved.variables.files.php

Обновление 2: Это действующий рабочий код, я использую его на загрузчике аватара самостоятельно, используя CI 2.1

<?php
//Just in case you decide to use multiple file uploads for some reason.. 
//if not, take the code within the foreach statement

foreach($_FILES as $files => $filesValue){
    if (!empty($filesValue['name'])){
        if ( ! $this->upload->do_upload()){
            $error = array('error' => $this->upload->display_errors());
            $this->load->view('upload_form', $error);
        }else{
            $data = array('upload_data' => $this->upload->data());
            $this->load->view('upload_success', $data);
        }
    }//nothing chosen, dont run.
}//end foreach
0 голосов
/ 14 февраля 2012

Вероятно, нужна дополнительная информация.Но в основном, используя класс загрузки codeigniter, сделайте что-то вроде этого:

$result = $this->upload->do_upload();

if($result === FALSE)
{

    // handle error
    $message = $this->upload->display_errors();
}
else
{
    // continue
}

В codeigniter много функциональности, вероятно, здесь не нужно заново изобретать колесо.

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