代码标志 上传时重命名文件

2022-08-30 12:32:34

我试图在上传时将时间与原始名称一起添加时间作为图像名称的前缀,但我无法弄清楚。请通过以下代码帮助我,以便在上传时为我的原始文件名添加前缀。

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

答案 1

您可以使用 CI 本机选项加密文件名:

$config['encrypt_name'] = TRUE;

你可以用自己的代码来做到这一点:

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

答案 2

由于某些原因,对do_upload函数的连续调用不起作用。它坚持使用第一个函数调用设置的第一个文件名

$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 ');

在给定以下配置的情况下,文件名都将是“00001_small”,“00001_small1”,“00001_small2”

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())...

我认为这是因为第二次调用它时,这条线不起作用。它不会再次设置配置

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

==========================================================================================================================do_upload================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

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

推荐