CodeIgniter中有错误消息
您提交的文件名已存在于服务器上
这有什么意义吗?让我解释一下。
File Uploading Class首选项中有一个名为“覆盖”的首选项。它可以是TRUE或FALSE。默认值为FALSE。如果为TRUE,则文件将被覆盖。如果它为FALSE,那么如果存在另一个具有相同名称的数字,则会将一个数字附加到文件名。所以,要么它会覆盖文件,要么重命名文件。怎么可能得到上述错误?
因此,看起来CodeIgniter无法正确重命名文件。
我查看了我的数据库,发现CodeIgniter如何重命名文件。虽然没有其他文件存在同名,但有些文件名附加了下划线(_),但之后没有数字。我还发现,当我尝试多次上传文件名为“myfilename.zip”的文件时,“myfilename_.zip”,“myfilename_1.zip”,“myfilename_2.zip”...“myfilename_11.zip”发现于上传路径。但是在那里找不到“myfilename.zip”而不是创建“myfilename_12.zip”,它向我显示了上述错误。
那么问题出在哪里?怎么解决这个问题?
更新
现在我明白了为什么我收到错误消息The file name you submitted already exists on the server
。检查是否存在任何具有相同名称的文件的机制适用于100个文件。它会检查是否存在任何具有相同名称的文件,如果找到,则会在文件名后附加一个数字并再次检查。这发生了100次。如果仍找到具有相同名称的文件,它将停止,这样脚本的执行不会花费太多时间。所以,我们可以说有一个限制,100是一个很好的限制。
但是我仍然在寻找答案,为什么有些文件附加了下划线,有些文件附加了下划线,然后是数字,有些文件只附加了数字。如果存在具有相同名称的另一个文件,则与文件附加数字的模式不一致。
答案 0 :(得分:1)
我通过设置$config['encrypt_name'] = TRUE
修正了此问题。
答案 1 :(得分:0)
你还没有把你的代码放在这里。但是,我认为你已经使用[file_name]索引将你的文件名设置为固定的,并对其进行了约束。
答案 2 :(得分:0)
我查看了我的数据库,发现CodeIgniter是如何重命名的 文件。虽然没有其他文件存在同名,但有些 文件名附加一个下划线(_),但后面没有数字 该
这种情况正在发生,因为默认情况下,下面的选项会将空格更改为下划线...如果要保留空格,请将其更改为FALSE。
remove_spaces TRUE
关于您的"The file name you submitted already exists on the server"
讯息 -
你将不得不做... ...
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
}
}
我没有测试过这段代码,但它应该给你一些想法。