web-dev-qa-db-ja.com

Codeigniterアップロード時のファイル名の変更

アップロード時に元の名前とともに画像名のプレフィックスとして時間を追加しようとしていますが、それを理解できませんでした。アップロード時に元のファイル名にプレフィックスを追加するには、次のコードを手伝ってください。

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

CIネイティブオプションを使用してファイル名を暗号化できます。

$config['encrypt_name'] = TRUE;

[〜#〜]または[〜#〜]

あなたはあなた自身のコードでそれを行うことができます:

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

何らかの理由で、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())...

これは、この行を2回目に呼び出したときに機能しないためだと思います。構成を再度設定することはありません

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

================================================== ======================== do_upload関数の連続呼び出し中に直面した問題の解決策:

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

あなたがまさに探しているもののために、これは私のために働いた:

$path = $_FILES['image']['name'];
$newName = "<Whatever name>".".".pathinfo($path, PATHINFO_EXTENSION); 
2
        /* 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);
1
Mohit Sharma

do_upload()関数を使用する場合、ファイル名が既に存在する場合は名前を変更し、ファイルをアップロードします

システム->ライブラリ-> Upload.php

do_upload()のデフォルト関数はtrueまたはfalseを返します

return $ this-> upload_path。$ this-> file_name;

そして別のファイルで

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

?>
1
$config['file_name'] = $new_name;

構成コードに合わせて追加するだけです。

0

これを試して:

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

これはアップロード後でなければなりません。

必要なファイル名をここで処理します。

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