我使用laravel 4.2
我在项目中有1000多张图片;多次上传后,这些图像已被主机用户占用。请以这种方式编辑示例实例,该示例实例将删除所有同时存储名称和文件的图像。
public function del_image()
{
$scan = scandir('uploads/evidence');
foreach($scan as $file)
{
if (!is_dir($file))
{
$list = DB::table('evidence')
->where('profile_img',$file)
->select('profile_img')->get();
echo '<pre>';print_r($list); echo '</pre>';
}
}
//echo $list."<br>";
//echo '<pre>';print_r($list); echo '</pre>';
}
谢谢。
答案 0 :(得分:0)
$scan = scandir('uploads/evidence');
$files = DB::table('evidence')->pluck('profile_img');
$protectTheseImages = [];
foreach($files as $file) {
$protectTheseImages[] = $file;
}
$diff = array_diff($scan, $protectTheseImages);
foreach($diff as $file) {
if (!is_dir($file)) {
unlink($file);
}
}
答案 1 :(得分:0)
我将此代码更新为:
$scan = scandir('uploads/evidence');
$files = DB::table('evidence')->pluck('profile_img');
$protectTheseImages = [];
foreach((array)$files as $file) {
$protectTheseImages[] = $file;
}
//dd($protectTheseImages);
$diff = array_diff($scan, $protectTheseImages);
foreach($diff as $file) {
if (!is_dir($file)) {
echo $file."<br>";
//unlink($file);
}
}
但是,行echo $file."<br>";
仅显示目录!!!中的所有图像!
答案 2 :(得分:0)
我认为您应该使用此代码。
$scan = scandir('uploads/evidence');
$files = DB::table('evidence')->pluck('profile_img');
$protectTheseImages = [];
foreach((array)$files as $file) {
$protectTheseImages[] = $file;
}
//dd($protectTheseImages);
$diff = array_diff($scan, $protectTheseImages);
foreach($diff as $file) {
if (!is_dir($file)) {
echo $file."<br>";
$image_path = '/folder_path/uploads/evidence/'.$file;
unlink($image_path);
}
}
希望此代码对您有所帮助。