2013-12-14 5 views
0

데이터베이스 열 attach1 및 attach2가 있습니다. 해당 열의 파일 (pdf)을 표시해야하지만 디렉토리가 www.domain.com/uploads 인 경우에만 표시해야합니다. Attach1은 실제 파일을 포함하지만 attach2는 포함하지 않습니다. PHP 파일이 존재하면 항상 존재 함 표시

나는이 같은 시도 :

<?php 
$file = $row['attach']; 
$exists = file_exists('uploads/'.$file.''); 
if ($exists) { 
    echo $file; 
} 
if (!$exists) { 
    echo 'No file1'; 
}  
?> 

<?php 
$file2 = $row['attach2']; 
$exists = file_exists('uploads/'.$file2.''); 
if ($exists) { 
    echo $file2; 
} 
if (!$exists) { 
    echo 'No file2'; 
}  
?> 

를하지만 매번는 attach2 아무것도 포함하지 않는 경우에도 파일이 있는지, 날 다시 메아리. 왜?

+0

코드 샘플에는 무의미한 것들이 많이 있습니다. 빈 문자열을 파일 이름 끝에 연결하지 않아도됩니다. 당신은 변수에'file_exists'의 결과를 저장할 필요가 없습니다. else를 사용하여 조건을 단순화 할 수 있습니다. –

+0

'echo $ file2'을 시도해보고 비어 있지 않은지 확인 했습니까? 그렇다면,'file_exists ('/ uploads')'를 체크 할 것입니다. 물론'TRUE'입니다. – Mureinik

+0

'if (isset ($ file)' – Sandesh

답변

2

파일 이름이 비어 있으면 디렉토리 이름 만 file_exists으로 전달합니다. 디렉토리도 파일입니다. 그리고 실제로 디렉토리가 존재한다고 생각합니다. 그것은 당신에게 거짓말하지 않습니다.

데이터베이스의 파일 이름이 비어 있지 않은지 확인하거나 전체 문자열을 is_dir 함수에 전달하여 해당 파일이 디렉토리인지 확인할 수 있습니다. 정규 파일 만 원한다고 가정합니다. 다음과 같이 보일 것이다

는 :
<?php 
$file = $row['attach']; 
$exists = file_exists('uploads/'.$file.'') && !is_dir('uploads/'.$file.''); 
if ($exists) { 
    echo $file; 
} else { 
    echo 'No file1'; 
}  
?> 

가 나는 else 절을 사용하는 if 문을 변경했습니다. 그것은 당신이했던 것처럼 두 번째 if을 사용하는 것과 같습니다.

+0

어떻게하면됩니까? – user2957822

+0

어느 부분입니까? 'is_dir'? –

+0

예. is_dir .... – user2957822

관련 문제