【发布时间】:2017-02-23 18:28:02
【问题描述】:
当用户选择文件时,服务器端的文件扩展名将被删除或重命名并使用 php codeigniter 库将其上传到服务器
【问题讨论】:
标签: file codeigniter upload rename
当用户选择文件时,服务器端的文件扩展名将被删除或重命名并使用 php codeigniter 库将其上传到服务器
【问题讨论】:
标签: file codeigniter upload rename
这应该会删除您的文件扩展名
<?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
【讨论】:
可以使用以下代码更改文件名:
$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
【讨论】:
我最近遇到了同样的问题,发现即使你在代码点火器中指定了一个文件名,它也会附加文件扩展名,这真的很烦人。这是我不想要的。
Blinkydamo 的链接没有帮助,因为那是我首先关注的链接并且没有提到这个困境,尽管它确实表明通过 Code Igniter 不可能直接通过忽略答案。
我没有尝试过 md asif rahman 的方法,但是看起来不错。
或者,您可以忘记使用 Code Igniter 的上传功能,而使用 PHP 标准功能,这就是我所做的:
move_uploaded_file($_FILES['imageFile']['tmp_name'], '/path/'.$filename);
其中 $filename 是包含扩展名的文件的确切名称,因此如果没有指定 - 它不会有一个。
【讨论】:
很简单
更改代码 库/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;
}
}
【讨论】: