php ftp检查文件夹是否存在总是返回错误创建文件夹

Plu*_*uda 3 php ftp

请问有人请告诉我这段代码我做错了什么?

if($id != '') {
    if(is_dir("../public_html".$tem_pasta['path']."/pics/".$id)) {
        echo "pasta já existia";
        $destination_file = "../public_html".$tem_pasta['path']."/pics/".$id."/".$myFileName;
    } else {
        //pasta nao existia
        if (ftp_mkdir($conn_id, "../public_html".$tem_pasta['path']."/pics/".$id)) {
            $destination_file = "../public_html".$tem_pasta['path']."/pics/".$id."/".$myFileName;
        //echo "pasta criada<br>";
        } else {
            echo "erro, não criou a pasta<br>";
        }
    }
} else {
    $destination_file = "../public_html".$tem_pasta['path']."/pics/".$myFileName;
}
Run Code Online (Sandbox Code Playgroud)

它会检查我的pics目录中是否有一个文件夹($ id),如果没有,脚本会创建一个新文件夹.效果很好,但如果我尝试将另一个文件上传到之前创建的文件夹,它确实会返回错误,说它没有创建文件夹...

谢谢

Wes*_*ley 7

我不认为你可以在FTP资源上使用is_dir,你应该做的是用ftp_size检查目录/文件的大小是否为-1.

因为我认为现在发生的是:您正在尝试再次创建相同的文件夹,这就是发生错误的原因.

编辑:或者检查ftp_chdir!

<?php 
function ftp_directory_exists($ftp, $dir) 
{ 
    // Get the current working directory 
    $origin = ftp_pwd($ftp); 

    // Attempt to change directory, suppress errors 
    if (@ftp_chdir($ftp, $dir)) 
    { 
        // If the directory exists, set back to origin 
        ftp_chdir($ftp, $origin);    
        return true; 
    } 

    // Directory does not exist 
    return false; 
} 
?> 
Run Code Online (Sandbox Code Playgroud)

应该管用!

  • 我知道,我是第一个,但没关系:) (2认同)

vst*_*stm 7

is_dir仅适用于本地文件系统.如果要检查ftp目录是否已存在,请尝试以下操作:

function ftp_is_dir($ftp, $dir)
{
    $pushd = ftp_pwd($ftp);

    if ($pushd !== false && @ftp_chdir($ftp, $dir))
    {
        ftp_chdir($ftp, $pushd);   
        return true;
    }

    return false;
} 

if($id != '') {
    if(ftp_is_dir($conn_id, "../public_html".$tem_pasta['path']."/pics/".$id)) {
    // and so on...
Run Code Online (Sandbox Code Playgroud)