我想删除文件扩展名或重命名文件扩展名,然后再上传到php codeigniter

时间:2016-10-14 10:40:38

标签: file codeigniter upload rename

当用户选择文件时,服务器端文件扩展名将被删除或重命名,并使用php codeigniter库将其上传到服务器

4 个答案:

答案 0 :(得分:0)

这应删除您的文件扩展名

<?php 
  $var = "testfile.php"; 
  $explode = explode( '.', $var ); 
  array_pop( $explode); 
  $var = implode( '.', $explode ); 
  var_dump( $var );

至于上传,您需要阅读文件上传手册

http://www.codeigniter.com/user_guide/libraries/file_uploading.html

答案 1 :(得分:0)

可以使用以下代码更改

文件名:

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

更改扩展程序,您可以使用:

 if ($this->upload->do_upload('file_name')) {
          $file_data=$this->upload->data();
          $new_name_by_you='anything'.$file_data['file_ext'];
          $new_path=$file_data['file_path'].$new_name_by_you;
          rename($file_data['full_path'],  $new_path);
    }

rename()是一个内置的php函数。有关详细信息,请访问http://php.net/manual/en/function.rename.php

答案 2 :(得分:0)

我最近遇到了同样的问题,发现它真的很烦人,即使你在代码点火器中指定了一个file_name,它也会附加文件扩展名。我不想要的。

Blinkydamo的链接没有帮助,因为这是我首先关注的链接,并没有提到这种困境,尽管它确实通过代码点火器无法正确地进行 - 通过省略答案。

我还没有尝试过使用asd rahman的方法,但它看起来很合理。

或者你可以忘记使用Code Igniter的上传功能,然后再回到PHP标准版上,这就是我所做的:

move_uploaded_file($_FILES['imageFile']['tmp_name'], '/path/'.$filename);

其中$ filename是包含扩展名的文件的确切名称,因此如果没有指定 - 它就没有。

答案 3 :(得分:0)

这很容易

更改代码 库/ upload.php的

public function set_filename($path, $filename)
{
    if ($this->encrypt_name === TRUE)
    {
        $filename = md5(uniqid(mt_rand()));
    }

    if ($this->overwrite === TRUE OR ! file_exists($path.$filename))
    {
        return $filename;
    }


    $filename = str_replace($this->file_ext, '', $filename);
    $new_filename = '';
    for ($i = 1; $i < $this->max_filename_increment; $i++)
    {
        if ( ! file_exists($path.$filename.$i))
        {
            $new_filename = $filename.$i;
            break;
        }
    }

    if ($new_filename === '')
    {
        $this->set_error('upload_bad_filename', 'debug');
        return FALSE;
    }
    else
    {
        return $new_filename;
    }
}