我有一个php
将图像的 zip 文件上传到文件夹的脚本。此脚本递归地仅查找 zip 文件中的文件,并将所有文件放在服务器上的单个目录中。
问题是某些文件被双重上传。这不是脚本的错,而是由于苹果计算机的荒谬和自卑,当 Mac 创建图像的 zip 文件时,它会创建一个图像文件夹,然后创建另一个文件夹,其中只有它放置的完全相同的图像“。 _”在文件名前面。因此,鉴于我们不会很快因苹果计算机的消失而感到幸运,我试图在我的php
脚本中包含一个简单的函数来搜索这些劣质的 mac 可憎之物并将它们从目录中删除。但是,php
当我使用"ftp_nlist"
.
所以我的问题是:我如何php
才能拉出这些愚蠢的东西,以便我可以删除它们?
$contents = ftp_nlist($conn_id, '.');
foreach($contents as $key => $value){
echo $key." => ".$value."<BR>";
if(substr($value, 1, 1) == ".") {
if(ftp_delete($conn_id, $value)) {
echo "Deleting $value<BR>";
}
}
echo "<BR>";
}
exit();
编辑:
所以多亏了斯蒂芬的建议,我才能想出这个可行的方法
if($zip->open($_FILES['theFile']['tmp_name']) === TRUE){
for($i = 0; $i < $zip->numFiles; $i++) {
$filename = $zip->getNameIndex($i);
$fileinfo = pathinfo($filename);
copy("zip://".$_FILES['theFile']['tmp_name']."#".$filename, $ezPresenter['currentFolder'].'/'.$fileinfo['basename']);
}
$zip->close();
}else{
exit("Could not upload/extract file");
}
$contents = ftp_rawlist($conn_id, '-a');
foreach($contents as $key => $value){
$value = explode(" ", $value);
$value = $value[count($value)-1];
echo $key." => ".$value."<BR>";
if(strpos($value, ".") === false) {
if(ftp_delete($conn_id, $value)) {
echo "Deleting $value<BR>";
}
}
if(substr($value, 0, 2) == "._") {
if(ftp_delete($conn_id, $value)) {
echo "Deleting $value<BR>";
}
}elseif(substr($value, 0, 1) == "." && $value != "." && $value != "..") {
if(ftp_delete($conn_id, $value)) {
echo "Deleting $value<BR>";
}
}
}