web-dev-qa-db-fra.com

Codeigniter Renommer le fichier lors du téléchargement

J'essaie d'ajouter du temps comme préfixe du nom de l'image avec le nom d'origine lors du téléchargement, mais je n'ai pas pu le comprendre Aidez-moi s'il vous plaît avec le code suivant pour ajouter un préfixe à mon nom de fichier original lors du téléchargement.

<?php

class Upload extends CI_Controller {

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

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

    function do_upload()
    {


        $config['upload_path'] = 'Public/uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '1024';
        $config['max_width']  = '1024';
        $config['max_height']  = '768';



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


        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);
        }
    }
}
?>
27
Dilukshan Mahendra

Vous pouvez chiffrer le nom de fichier avec l’utilisation de l’option native CI:

$config['encrypt_name'] = TRUE;

OU

Vous pouvez le faire avec votre propre code:

$new_name = time().$_FILES["userfiles"]['name'];
$config['file_name'] = $new_name;
74
Kumar V

Pour certaines raisons, les appels consécutifs à la fonction do_upload ne fonctionnent pas. Il s'en tient au premier nom de fichier défini par le premier appel de fonction

$small_photo_url  = $this->upload_photo('picture_small',  $this->next_id.'_small ');
$medium_photo_url = $this->upload_photo('picture_medium', $this->next_id.'_medium');
$large_photo_url  = $this->upload_photo('picture_large',  $this->next_id.'_large ');

Les noms de fichiers seront tous "00001_small", "00001_small1", "00001_small2" Compte tenu des configurations suivantes

function upload_photo($field_name, $filename)
{
    $config['upload_path'] = 'Public/uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '1024';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';
    $config['file_name'] = $filename;

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

    if ( ! $this->upload->do_upload())...

Je pense que c'est parce que cette ligne ne fonctionne pas la deuxième fois que vous l'appelez. Il ne définit pas les configurations à nouveau

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

=============================================== ======================== Solution au problème rencontré lors d'appels de fonction consécutifs à la fonction do_upload:

// re-initialize upload library
$this->upload->initialize($config);
8
Carmela

Pour ce que vous cherchez exactement, cela a fonctionné pour moi: 

$path = $_FILES['image']['name'];
$newName = "<Whatever name>".".".pathinfo($path, PATHINFO_EXTENSION); 
2
Heshan Rajapaksha
        /* Conf */
        $new_name                   = time().$_FILES["userfiles"]['name'];
        $config['file_name']        = $new_name;
        $config['upload_path']      = './upload/';
        $config['allowed_types']    = 'gif|jpg|png';
        $config['max_size']         = '';
        $config['max_width']        = '';
        $config['max_height']       = '';
        $config['file_ext_tolower'] = TRUE;

      /*  Load the upload library  */   
        $this->load->library('upload', $config);
0
Mohit Sharma

lorsque vous utilisez la fonction do_upload (), renommez le nom du fichier s'il existe déjà et envoyez le fichier

Système-> bibliothèques-> Upload.php

la fonction par défaut de do_upload () renvoie true ou false replace 

return $ this-> upload_path. $ this-> nom_fichier;

et dans un autre fichier

 <input type='file' name='userfile'/>


<?php
    $upload_file_name = $this->upload->do_upload('userfile');
                $finalname;
                if (!$upload_file_name) {
                    $finalname = 'default.png';
                } else {

                    $split_data_upload_file_name = explode("/", $upload_file_name);
                    foreach ($split_data_upload_file_name as $i => $value) {

                        $finalname = $value;
                    }
                }

?>
0
pruthwiraj.kadam
$config['file_name'] = $new_name;

Il suffit de l'ajouter pour l'aligner avec les codes de configuration.

0

Essaye ça:

$config['file_name'] = "yourCustomFileName";
0
Rafiqul Islam

Cela devrait être après le téléchargement. 

Traitez le nom de fichier que vous voulez ici: 

$a=$this->upload->data();         
rename($a['full_path'],$a['file_path'].'file_name_you_want');
0
user2955330