2012-04-14 6 views
1

'name = fileImage'라는 파일 입력이 있습니다.파일 이름이 다른 파일을 업로드하는 방법

if (file_exists("ImageFiles/" . $_FILES["fileImage"]["name"])) 
    { 

    } 

내 질문이 파일이 폴더에 존재하는 경우에 것을, 어떻게이되도록 코딩 할 수있다 : 지금은하지 PHP는이 파일이있는 폴더 (ImageFiles)에 존재하는지 확인합니다 경우 아래의 코드 또는이 그것은 여전히 ​​파일을 업로드하지만 다른 파일 이름을 제공합니다. 파일 이름 끝에 자동으로 숫자를 추가하여 다른 파일 이름을 부여하는 것과 같은 것일 수 있습니까?

+0

업로드 된 파일은 일반적으로 원래 이름과 완전히 다른 이름으로 저장해야한다고 주장합니다. 이렇게하면 정보 유출 (사람들이 "myfile.txt"에서 "test.txt", "secret.doc"등으로 링크를 변경하여 다른 사람들의 파일을 볼 수 없게 됨)을 방지하고 파일 이름의 국제 문자에 대해 걱정할 필요가 없으며, 파일을 다른 파일 시스템으로 복사해야하는 경우에는 합병증을 피하십시오 (예 : "test.txt"와 "Test.txt"가 같은 폴더에 있으면 개발 용 Windows로 복사하는 것이 엉망입니다). – DCoder

답변

6

$_FILES은 단지 변수 일 뿐이며, 이는 매우 전역 적이며 파일 업로드 데이터로 미리 채워집니다. 쉽게 변경할 수 있다는 의미입니다. 당신이 당신의 자신의 선택의 이름으로 업로드 된 파일의 이름을 변경하려면

if(file_exists("ImageFiles/".$_FILES['fileImage']['name'])) { 
    $parts = explode(".",$_FILES['fileImage']['name']); 
    $ext = array_pop($parts); 
    $base = implode(".",$parts); 
    $n = 2; 
    while(file_exists("ImageFiles/".$base."_".$n.".".$ext)) $n++; 
    $_FILES['fileImage']['name'] = $base."_".$n.".".$ext; 
} 
// now use $_FILES['fileImage']['name'] just like you would normally 
0

, 당신은 분명히이 코드는 이전 파일마다 A를 대체 할

<?php 

    //Any file name user/uploader has chosen/used on his/her computer 
    $tmp_name = $_FILES["domainfile"]["tmp_name"]; 

    //Name you want 
    $name = "MyDesiredName.png"; //save as MyDesiredName.png 

    //Move/save file 
    move_uploaded_file($tmp_name, $name); 

?> 

을 시도 할 수 있습니다 : 예를 들어

새 파일이 업로드됩니다.
이런 일이 일어나지 않게하려면 $ name
에 변수를 추가하고 $ name ++을하고 나중에 참조 할 수 있도록 값을 저장하는 방법을 찾아야합니다.

관련 문제