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);
}
}
}
?>
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;
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);
Pour ce que vous cherchez exactement, cela a fonctionné pour moi:
$path = $_FILES['image']['name'];
$newName = "<Whatever name>".".".pathinfo($path, PATHINFO_EXTENSION);
$config['file_name'] = $new_name;
Il suffit de l'ajouter aligner avec les codes de configuration.
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');