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