php
  • upload
  • rename
  • filenames
  • auto-increment
  • 2016-12-06 7 views 0 likes 
    0

    내 사용자는 프로필 사진을 하나씩 업로드 할 수 있지만 원하는만큼 자주 업로드 할 수 있습니다. 파일명 내 자동 증가 숫자

    이 코드 내에 저장됩니다,의 사용자 1 이미지를 업로드 가정하자 업로드 폴더 :

    <?php 
    
    $fileData = pathinfo(basename($_FILES["fileToUpload"]["name"])); 
    
    $fileName = 'user_id_#1#_profilepic_#' . uniqid() . '#.' . $fileData['extension']; 
    
    $target_path = "uploads/" . $fileName; 
    
    while(file_exists($target_path)) { 
        $fileName = 'user_id_#1#_profilepic_#' . uniqid() . '#.' . $fileData['extension']; 
        $target_path = ($_SERVER['DOCUMENT_ROOT'] . "uploads/" . $fileName); 
    } 
    
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_path)) { 
    
        echo "The image was successfully uploaded. <a href='index.php'>Add another image</a>"; 
    } 
    else { 
        echo "There was an error uploading the file, please try again!"; 
    } 
    
    ?> 
    
    이 uniqid()가 나중에에있는 이미지를 찾을 수있는 악몽 때문에, 교체 ​​할 필요가

    올바른 순서.

    user_id_#1#_profilepic_#1#.jpg 
    user_id_#1#_profilepic_#2#.jpg 
    user_id_#1#_profilepic_#3#.png 
    user_id_#1#_profilepic_#4#.gif 
    user_id_#1#_profilepic_#5#.jpg 
    and so on... 
    

    나는이 방법을 수행 할 수 있습니다 같이하기 - 업로드 후 -

    나는 이미지를 원하는? 지금까지 아이디어가 없습니다.

    +0

    대신 타임 스탬프와 같은 것을 사용하지 않으시겠습니까? '$ fileName = 'user_id_ # 1 # _profilepic_ #'. 시각() . '#'. . 처음에는 그 옵션에 대해 몰랐기 때문에 $ fileData [ 'extension']; ' – AbraCadaver

    +0

    이었습니다. 그러나 지금 나는 다른 그림을 보여주고 싶을 때 그 이름을 어떻게 읽을 수 있을지 궁금합니다. 파일 이름에 자동 증가 숫자가있는 경우 가장 높은 숫자로 시작하고 클릭시 낮은 숫자로 이동할 수 있습니다. 그러나 파일 이름에 시간이 관련되어 있다면 작동하지 않습니다. 맞습니까? – Maxischl

    +1

    '$ users_files = glob ('user_id_ # 1 # _profilepic _ # *. *'); ' – AbraCadaver

    답변

    0

    당신은 당신의 디렉토리에 파일 번호가 증가 할 수 있습니다 (사용자가 자신의 사진을 삭제 할 수있는 경우 권장하지 않음) :

    $total_files = count(glob("./*",GLOB_BRACE)); // count files in directory 
    echo $total_files; 
    

    OR을 :

    당신이 번호를 기록하는 텍스트 파일을 사용합니다. exemple 들어

    : 당신의 사용자가 파일을 업로드 : 텍스트 파일의 현재 번호를 가져옵니다 - txt 파일에 새 번호를 기록> -> +1을 추가하고이 번호를 사용하여 파일을 이름을 바꿉니다.

    가장 좋은 방법은 데이터베이스 레코드의 고유 ID 여야하지만 DB를 사용하지 않는 것이 좋습니다.

    당신을 도울 수 있기를 바랍니다.

    좋은 하루 되세요!

    +0

    감사합니다. 나는 그것에 대해 생각했지만, 이미 언급 했었습니다. 사용자가 파일을 삭제하면, 다음 업로드시 시스템이 파괴됩니다. 그게 내가 그것을 사용할 수없는 이유입니다 .. 오늘은 텍스트 thingything에 대해 읽었지만, 모든 사용자와 모든 그림 유형 (프로필 그림, 블로그 그림, 게시 사진 등)에 대해 새 파일을 만들 필요가 있음을 의미합니다. 권리? 그게 나에게도 똑똑한 방법은 아닌 것 같아. – Maxischl

    +0

    아마도 "count (glob (...)"시스템을 사용하고 이름이 이미 scandir() 함수와 함께 사용되었는지 확인할 수 있습니다.) – x2aces

    +0

    내 previou 코멘트를 사용해 주셔서 죄송합니다. 처음 stackoverflow에 관한 것이고 아직 어떻게 ^^ – x2aces

     관련 문제

    • 관련 문제 없음^_^