如何使用 Codeigniter 删除上传的文件?
Posted
技术标签:
【中文标题】如何使用 Codeigniter 删除上传的文件?【英文标题】:How to delete uploaded files with Codeigniter? 【发布时间】:2013-01-31 17:47:49 【问题描述】:我使用 Codeigniter 的上传类将图像上传到项目中的文件夹。在数据库中我只存储上传图片后生成的url,所以当我想删除数据库中的一行时,我还需要删除图片。如何在 codeigniter 中做到这一点?
我会很感激你的回答。
【问题讨论】:
delete_row_from_db(); unlink('/path/to/file');
?
它显示了一个错误,就像我无法从“http://...”中删除它
不能从 url 中删除,只能取消链接本地文件系统路径。
如果文件在服务器上,/path/to/file 不应该有 http:// 协议。您需要在服务器的文件系统中指定实际路径。
您可以使用文件助手中的“delete_files”功能删除所有文件。***.com/questions/14178731/…
【参考方案1】:
您可以删除给定路径中的所有文件,例如uploads
文件夹中的所有文件,使用此deleteFiles()
函数可以在您的模型之一中:
$path = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
function deleteFiles($path)
$files = glob($path.'*'); // get all file names
foreach($files as $file) // iterate files
if(is_file($file))
unlink($file); // delete file
//echo $file.'file deleted';
【讨论】:
【参考方案2】:delete_row_from_db(); unlink('/path/to/file');
/path/to/file 必须是真实路径。
例如:
如果你的文件夹是这样的 htp://example.com/uploads
$path = 真实路径(APPPATH . '../uploads');
APPPATH = 应用程序文件夹的路径。
它的工作...
【讨论】:
【参考方案3】:if(isset($_FILES['image']) && $_FILES['image']['name'] != '')
$config['upload_path'] = './upload/image';
$config['allowed_types'] = 'jpeg|jpg|png';
$config['file_name'] = base64_encode("" . mt_rand());
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (!$this->upload->do_upload('image'))
$error = array('error' => $this->upload->display_errors());
$this->session->set_flashdata('msg', 'We had an error trying. Unable upload image');
else
$image_data = $this->upload->data();
@unlink("./upload/image/".$_POST['prev_image']);
$testData['image'] = $image_data['file_name'];
【讨论】:
【参考方案4】:$m_img_real= $_SERVER['DOCUMENT_ROOT'].'/images/shop/real_images/'.$data['settings']->shop_now;
$m_img_thumbs = $_SERVER['DOCUMENT_ROOT'].'/images/shop/thumbs/'.$data['settings']->shop_now;
if (file_exists($m_img_real) && file_exists($m_img_thumbs))
unlink($m_img_real);
unlink($m_img_thumbs);
【讨论】:
【参考方案5】:查看:
<input type="file" name="new_file" data-required="1" class="" />
<input type="hidden" name="old_file" value="echo your old file name"/>
<input type="submit" name="submit"/>
控制器:
function edit_image()
if(isset($_FILES['new_file']['name']) && $_FILES['new_file']['name'] != '')
move_uploaded_file($_FILES['new_file']['tmp_name'],'./public_html/banner/'.$_FILES['new_file']['name']);
$upload = $_FILES['new_file']['name'];
$name = $post['old_file'];
@unlink("./public_html/banner/".$name);
else
$upload = $post['old_file'];
【讨论】:
【参考方案6】:尝试使用 CI 框架本身提供的delete_files('path')
函数:
https://ellislab.com/codeigniter/user-guide/helpers/file_helper.html
【讨论】:
【参考方案7】:$image_data = $this->upload->data();
unlink($image_data['full_path']);
$this->upload->data()
这一行会返回很多关于上传文件的信息。您可以打印信息并进行相应的工作。
【讨论】:
以上是关于如何使用 Codeigniter 删除上传的文件?的主要内容,如果未能解决你的问题,请参考以下文章