Php CodeIgniter文件上载覆盖错误(默认)自动重命名问题
CodeIgniter中有一条错误消息 服务器上已存在您提交的文件名 这有什么意义吗?让我解释一下 首选项中有一个名为“覆盖”的首选项。它可以是真的也可以是假的。默认值为FALSE。如果为真,则文件将被覆盖。如果为FALSE,则如果存在具有相同名称的文件名,则会在文件名后追加一个数字。因此,它要么将覆盖该文件,要么将重命名该文件。如何可能得到上述错误 因此,看起来CodeIgniter无法正确重命名文件 我查看了我的数据库,发现CodeIgniter是如何重命名这些文件的。尽管没有其他同名文件存在,但某些文件名后面附加了下划线(389;),但后面没有数字。我还发现,当我多次尝试上载文件名为“myfilename.zip”的文件时,“myfilename_u.zip”、“myfilename_1.zip”、“myfilename_2.zip”。。。在上载路径中找到“myfilename_11.zip”。但是在那里找不到“myfilename.zip”,它没有创建“myfilename_12.zip”,而是向我显示了上面的错误 那么,问题在哪里?如何解决这个问题 更新: 现在我明白了为什么会收到错误消息Php CodeIgniter文件上载覆盖错误(默认)自动重命名问题,php,codeigniter,file-upload,Php,Codeigniter,File Upload,CodeIgniter中有一条错误消息 服务器上已存在您提交的文件名 这有什么意义吗?让我解释一下 首选项中有一个名为“覆盖”的首选项。它可以是真的也可以是假的。默认值为FALSE。如果为真,则文件将被覆盖。如果为FALSE,则如果存在具有相同名称的文件名,则会在文件名后追加一个数字。因此,它要么将覆盖该文件,要么将重命名该文件。如何可能得到上述错误 因此,看起来CodeIgniter无法正确重命名文件 我查看了我的数据库,发现CodeIgniter是如何重命名这些文件的。尽管没有其他同名文件存
,您提交的文件名已经存在于服务器上
。检查是否存在同名文件的机制适用于100个文件。它检查是否存在同名文件,如果找到,则在文件名后附加一个数字,然后再次检查。这种情况发生100次。如果仍然找到同名的文件,它将停止,因此脚本的执行不会花费太多时间。所以,我们可以说有一个极限,100是一个很好的极限
但我仍然在寻找答案,为什么有些文件附加了下划线,有些文件加了下划线,然后加了数字,有些文件只加了数字。如果存在另一个同名文件,则在文件中添加数字的模式不一致。您没有将代码放在此处。但是,我认为您已使用[file_name]索引将文件名设置为固定名称,并对其进行了限制 我查看了我的数据库,发现CodeIgniter是如何重命名 文件夹。虽然没有其他同名文件存在,但有些 其中一个文件名后面加了下划线(551;),但后面没有数字 那 这是因为默认情况下,下面的选项将空格更改为下划线。。。如果要保留空格,请将其更改为FALSE
remove_spaces TRUE
关于您的“您提交的文件名已存在于服务器上”
消息-
你将不得不做一些像
if($_FILES['image']['error'] == 0){
$file_name = $_FILES['image']['name'];
if(file_exists($upload_dir.$file_name)) {
show_error('The file name you submitted already exists on the server!');
} else {
//do_upload() etc
}
}
我没有测试过这段代码,但它应该会给你一些想法。我通过设置
$config['encrypt\u name']=TRUE来解决这个问题。
我没有将代码放在这里,因为我使用的是基本代码。我没有使用[file_name]索引设置文件名,因此可以保留原始文件名。文件名中没有空格。因此,我不理解上传后将filename.zip重命名为filename_uz.zip的逻辑。就我而言,我没有将“覆盖”首选项设置为任何内容。因此,默认值为FALSE。因此,CodeIgniter的文件上载类应该通过在文件名后添加一个数字来重命名文件,并保存它(如果存在另一个同名文件)。这对我来说不太好。正如您所建议的,我不需要使用任何代码,因为CodeIgniter的文件上载类处理这些代码。我担心的是收到错误消息的原因。你在哪里添加的?