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. Veuillez m'aider avec le code suivant pour ajouter un préfixe à mon nom de fichier d'origine 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);
        }
    }
}
?>
24
demandé sur Dilukshan Mahendra 2014-02-16 17:30:24

5 réponses

Vous pouvez chiffrer le nom du 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;
68
répondu Kumar V 2014-02-16 13:46:18

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" étant donné les 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 encore

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

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

// re-initialize upload library
$this->upload->initialize($config);
8
répondu Carmela 2017-08-23 09:49:12

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

$path = $_FILES['image']['name'];
$newName = "<Whatever name>".".".pathinfo($path, PATHINFO_EXTENSION); 
2
répondu Heshan Rajapaksha 2016-07-04 03:02:53
$config['file_name'] = $new_name;

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

0
répondu Jesus Erwin Suarez 2016-03-04 18:30:00

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
répondu user2955330 2016-05-06 09:41:10