我尝试unlink
CodeIgniter中的图像,但unlink
函数显示:
注意未定义的索引:userfile
这是我的代码
<?php
function get_from_post(){
$data['logo_name'] = $this->input->post('logo_name',TRUE);
$data['logo_thumb'] = $_FILES['userfile']['name'];
return $data;
}
function deleteconf($data){
$data= $this->get_from_post();
$update_id=$this->uri->segment(3);
@unlink(base_url.'image/logo_thumb'.$logo_thumb);
$query= $this->_delete($update_id);
}
?>
答案 0 :(得分:3)
unlink函数显示通知Undefined index:
userfile
确保您已为上传表单使用enctype="multipart/form-data"
属性/值。
<form action="" method="post" accept-charset="utf-8" enctype="multipart/form-data">
来自MDN:
<强>是enctype 强>
multipart/form-data
:如果您使用<input>
,请使用此值 type属性设置为“file”的元素。
如果您要使用CodeIgniter form helper,可以使用form_open_multipart()
函数:
此功能与上面的
form_open()
标记完全相同 除了它添加了一个multipart属性,如果你需要它 我想用表格上传文件。
PHP unlink()
函数接受文件的 Path 作为第一个参数。不是网址。
网站的base_url()
帮助函数returns the URL address,config.php
文件中的which you've set。
您必须使用服务器上文件的路径,如下所示:
unlink('/path/to/image/image_name.jpg'); // This is an absolute path to the file
您可以使用绝对或相对路径,但请注意相对路径 相对于 index.php
个文件。即如果image/
文件夹放在index.php
文件旁边,则应使用image/image_name.jpg
作为文件路径:
unlink('image/image_name.jpg'); // This is a relative path to the file
答案 1 :(得分:0)
试试这段代码
unlink(base_url().'/image/logo_thumb'.$logo_thumb);
注意:您未在$logo_thumb
中分配/声明deleteconf()
。
请检查您的代码。
答案 2 :(得分:0)
function get_from_post(){
$filename = $_POST['logo_name'];
$path = $_SERVER['DOCUMENT_ROOT'].'/projectname/uploads/'.$filename ;
if(is_file($path)){
unlink($path);
echo 'File '.$filename.' has been deleted';
} else {
echo 'Could not delete '.$filename.', file does not exist';
}
}
答案 3 :(得分:0)
首先检查文件输入名称。是“用户文件”还是没有? 如果没有,那么添加它然后再次运行它。
答案 4 :(得分:0)
如果您要为用户个人资料上传照片,也可以 在删除旧用户照片时 在codeignitor中使用unlink方法
$query = $this->db->where('profile_id',$profile_id)->get('users')->row();
$result = $query->photo;
$result = http://localhost/abc/user_photo/FE12563.jpg
if ($result) {
$dd = substr($result, strlen(base_url()));
unlink($dd);
return $this->db->set('photo',$photo)->where('profile_id',$profile_id)->update('users');
}
答案 5 :(得分:0)
base_url()函数返回您项目的url,但是在这里您必须使用要删除的文件的目录路径。
$path = BASEPATH.'/assets/upload/employees/contracts/';
$get_file = $path.$con_id.'.jpg';
if(file_exists($get_file)){
unlink($get_file);
}
代替unlink(base_url("/assets/upload/employees/contracts/'.$con_id."));
答案 6 :(得分:0)
第一个取消链接功能仅适用于路径(不带url),因此请删除base_url()函数。
然后在您的第一个函数 $ _ FILES 数组中不包含 userfile 索引,这就是为什么会出错的原因。
注意:-在使用unlink之前,我还要使用file_exists()函数,首先它将检查文件是否在同一路径上,然后使用unlink函数(用于错误处理)。
喜欢-
<?php
if(file_exists(filePath))
{
unlink(filePath);
}
?>
请同时解决两个问题。
谢谢
答案 7 :(得分:0)
假设您在数据库中具有文件名,并且您的文件是abc.jpg。然后要在Code Igniter中取消链接,只需-
$file = "abc.jpg";
$prev_file_path = "./assets/uploads/files/".$file;
if(file_exists($prev_file_path ))
unlink($prev_file_path );
我的文件上传路径为“ public_html / assets / uploads / files /”。我在我的控制器“ public_html / application / controllers / MyController.php”中编写了以上代码。因此,路径将与我在CI文件上传部分中使用的路径相同。即
...
$config['upload_path'] = './assets/uploads/files';
...
因此,我们在上载和取消链接部分都使用了相对路径。因此,如果上传正常运行,那么这也将正常运行。
答案 8 :(得分:-1)
$this->load->helper("file");
在取消链接之前添加上面的行
unlink($path);
答案 9 :(得分:-1)
是否可以使用此代码删除文件夹中的图像。
unlink(realpath('uploads /'。$ _image));
“uploads”:图片存在于uploads文件夹中。 “$ _image”:图像文件名
PHP函数: 1:unlink() 2:realpath()
以上代码在我的网站上成功运行,以删除文件夹中的图像。