我做了2個檢查文件名區分有效性的(上載):PHP,文件存在:'con'?
- 是否存在具有相同名稱的另一個文件?
- 可以用這個名字創建一個文件嗎?
對於(1)我使用file_exists
,爲(2) - fopen
進行創建。
$dir = '../../images/';
if (file_exists($dir.$name))
{
ok('alreadyexists', 'true');
}
else
{
$file = fopen($dir.$name, 'x');
if (FALSE == $file)
{
ok('invalid', 'true');
}
else
{
fclose($file);
ok();
}
}
測試上面的代碼,我嘗試了'con'這個名字(AFAIK,在Windows下你不能創建這樣的文件)。我認爲它會在第二次測試中失敗,但file_exists
對'../../images/con'返回true!爲什麼?
我建議使用'is_writable($ dir。$ name)'在文件被觸摸/創建後(文件在fclose後保存)。 'touch'也是一個很好的方法,用於初始創建文件並測試它是否可以寫入 – DanFromGermany
@DanFromGermany如果將註釋轉換爲答案,我會接受它,因爲應該使用'is_writable'而不是'file_exists'爲宣佈的目的。 – noober
LOL。現在'con'通過'is_writable'傳遞,但是'fopen'會在輸出中產生一個警告,而不是返回FALSE。它必須被替換,我正在尋找什麼) – noober