2012-11-07 2 views
-1

디렉토리의 파일 내용을 목록에 표시하는 PHP 코드가 있습니다. 각 파일은 링크되어 있으므로 클릭하면 다운로드하거나 열 수 있습니다. 디렉토리 내의 파일은 고객이 업로드 한 파일입니다. 파일 이름에 공백이 포함되어 있으면 링크가 끊어져 열리지 않으므로 공백을 밑줄로 바꾸고 싶습니다.파일 이름에 str_replace가 있습니다.

str_replace가 내가 찾고있는 것을 알고 있지만이 코드에 적용하는 방법을 모르겠습니다. (필자는이 코드를 작성하지 않았습니다).

// Define the full path to your folder from root 
$path = "uploads/artwork"; 


// Open the folder 
$dir_handle = @opendir($path) or die("Unable to open $path"); 

// Loop through the files 
while ($file = readdir($dir_handle)) { 

if($file == "." || $file == ".." || $file == "index.php") 

    continue; 
    echo "<a href=uploads/artwork/$file>$file</a><br />"; 

} 
// Close 
closedir($dir_handle); 

모든 도움을 주시면 대단히 감사하겠습니다. 고맙습니다!

답변

5

파일 이름을 서버에 저장할 때 파일 이름을 밑줄로 바꾸어야합니다.

파일을 저장할 위치에 코드가 없으므로 urlencode() 링크 URL을 사용하여 위험한 문자로 손상되지 않도록 할 수 있습니다. 내가 여기서 뭐하는거야 따옴표로 둘러싸인 href 값이 없어서 원래는 공백으로 파괴 된 것을 참고 : 그렇지 않으면

echo "<a href='" . urlencode("uploads/artwork/$file") . "'>$file</a><br />"; 

, 공백을 밑줄 교체를, 당신이 할 것 :

echo "<a href=" . str_replace(' ', "_", "uploads/artwork/$file") . ">$file</a><br />"; 

하지만 다시 업로드 할 때 파일 이름을 변경해야 할 수 있습니다. 당신은 또한 HTML 페이지를 깨는 그러한 < 같은 문자를 방지하기 위해 해당 링크의 $file 부분에 htmlentities()를 호출 할 수 있습니다

참고. 따라서 최종 결과는 다음과 같습니다.

echo "<a href='" . urlencode("uploads/artwork/$file") . "'>" . htmlentities($file) . "</a><br />"; 
관련 문제