Проверьте, будет ли файл загружен? Устройство для кодирования


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

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

$upld_file = $this->upload->data();
    if(!empty($upld_file)) 
    {
    //Upload file
    }
Author: Shree, 2012-02-14

2 answers

Вы используете класс загрузчика файлов 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);
}

Руководство пользователя подробно объясняет это: http://codeigniter.com/user_guide/libraries/file_uploading.html

Однако, если вы решительно настроены на проверку того, был ли файл "загружен", он же.. отправлено ДО того, как вы вызовете этот класс (не знаю, зачем вам это нужно). Вы можете получить доступ к PHPs $_FILES супер глобальному.. и использовать условие, чтобы проверить, если размер > 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
 6
Author: gorelative, 2015-10-13 14:48:13

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

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

if($result === FALSE)
{

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

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

 0
Author: Jahmic, 2012-02-14 13:05:20