TP5 删除(unlink)图片时找不到路径问题

在使用ThinkPHP5搭建的小系统中,实现图片上传后自动删除不再需要的图片功能。因存储空间限制,通过设置全局变量COMMON_PATH指向公共文件夹目录,成功利用unlink函数删除指定路径下的图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

最近用TP5在搭一个小系统,系统里有上传图片的功能,既然有上传图片,就需要有删除图片的机制,由于需求的主人条件不大好,系统存储空间不大,所以当一张图片不再需要的时候我就想自动把它删掉,但是在使用unlink去删除的时候一直在报找不到路径的错误,看了好几次路径是没有问题的,网上似乎没什么人遇到这样的问题,于是最后无奈,只得在入口文件配置一个路径的变量来对它进行删除。

解决方案

我们直接在index.php入口文件中自定义一个相对路径就可以了,道理非常简单,那么直接贴代码了:

将COMMON_PATH全局变量指向我们存放公共文件夹的目录public下,然后unlink的时候根据COMMON_PATH下的上传文件夹upload下面的文件进行删除:

最后实验验证是OK的

 

转载注明出处

好的,下面是使用C++编写的代码示例,可以调用`unlink()`函数删除指定路径的文件,并确保不删除未关闭的文件: ```cpp #include <iostream> #include <fcntl.h> #include <unistd.h> #include <unordered_set> std::unordered_set<std::string> openFiles; // 文件打开列表 bool openFile(const std::string& filename) { // 检查文件是否已经打开 if (openFiles.count(filename) > 0) { std::cout << "文件已经打开:" << filename << std::endl; return false; } // 打开文件 int fd = open(filename.c_str(), O_RDWR); if (fd == -1) { std::cout << "无法打开文件:" << filename << std::endl; return false; } // 更新文件打开列表 openFiles.insert(filename); // 在此处可以进行其他操作,例如读取或写入文件 // 关闭文件 close(fd); // 从文件打开列表中移除文件 openFiles.erase(filename); return true; } bool deleteFile(const std::string& filename) { // 检查文件是否已经打开 if (openFiles.count(filename) > 0) { std::cout << "文件未关闭:" << filename << std::endl; return false; } // 删除文件 int result = unlink(filename.c_str()); if (result == -1) { std::cout << "无法删除文件:" << filename << std::endl; return false; } std::cout << "成功删除文件:" << filename << std::endl; return true; } int main() { std::string filename = "example.txt"; // 第一次打开文件 if (openFile(filename)) { std::cout << "成功打开文件:" << filename << std::endl; } // 尝试删除已打开的文件 if (deleteFile(filename)) { std::cout << "成功删除文件:" << filename << std::endl; } // 尝试删除未关闭的文件 if (deleteFile(filename)) { std::cout << "成功删除文件:" << filename << std::endl; } return 0; } ``` 在上面的代码中,我们添加了一个`deleteFile()`函数,用于删除指定路径的文件。在该函数中,我们首先检查文件是否已经打开,如果已打开则返回错误。然后,我们调用`unlink()`函数删除文件。在`main()`函数中,我们演示了如何打开文件、删除已打开的文件以及尝试删除未关闭的文件。请注意,为了演示目的,我们在打开文件后立即关闭它们,以便能够进行删除操作。你可以根据实际需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_我走路带风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值