2012-07-20 3 views
0

업로드시 내 이미지의 이름을 바꾸려고 시도했지만 32cm 해시를 사용하는 코드 만 찾았습니다.워드 프레스에서 업로드 할 때 파일 이름 바꾸기 3.4.1

function make_filename_hash($filename) { 
    $info = pathinfo($filename); 
    $ext = empty($info['extension']) ? '' : '.' . $info['extension']; 
    $name = basename($filename, $ext); 
    return md5($name) . $ext; 
} 
add_filter('sanitize_file_name', 'make_filename_hash', 10); 

내 PHP는 지식은 매우 제한되어 내가 성공하지 않고, 어떤 임의의 숫자 대신 해시의 생성되는 사용하는 예를 들어 사방 보였다. 내 초기 아이디어는 DB 이미지 ID를 얻고 업로드시 이미지 파일 이름으로 사용하는 것이었지만 그 과정에서 내 머리가 꼬였습니다.

어쨌든이 시점에서 모든 업로드마다 하나의 숫자만큼 증가하는 일종의 번호 매기기 시스템에 대해 해결할 것입니다. 그렇지 않으면 rand (10000,99999)와 같은 범위를 사용하여 적어도 임의의 숫자를 사용할 수 없습니다.

어떤 도움은 매우 감사에게 많은

=================================을 감상 할 수있다 ===================================== 확인 도와 줘서 고마워. 에릭, 이젠 내가 지금까지 얻었고 더 잘하는 것 같다. 그래도 연속적으로 만들 수있는 방법이 있습니까? 분명히 mt_rand 사용하지 :) 모든 업로드와 함께 1 씩 증가 같은 것. 업로드시 문제가 발생할 수 있으므로 같은 번호가 두 번 생성 될 수도 있습니다.

function make_filename_hash($filename) { 
    $info = pathinfo($filename); 
    $ext = empty($info['extension']) ? '' : '.' . $info['extension']; 
    return mt_rand(10,10000) . $ext; 
} 
add_filter('sanitize_file_name', 'make_filename_hash', 10); 

=========================================== ============================================= 함수에서 사용자 정의 테이블의 데이터를 읽을 수 있습니까? PHP로 작성하십시오. 그 카운터 번호로 이미지를 설정하고 db의 카운터를 업데이트하는 테이블에서 카운터를 읽으려고합니다. 작동하지 않는 것처럼 보이지만 카운터가 증가하지만 테이블이 업데이트되지 않으며 db의 값이 무엇이든 관계없이 카운터는 해당 값을 사용하지 않으므로이 값도 읽지 않습니다. 파일 이름을 바꾸려면 내 사용자 정의 테이블의 값을 사용하여이 작업을 수행 할 수있는 다른 방법이 있는지 알고 싶습니다. 이것은 내가 지금까지 얻은 것이다. 나는 틀린 고리를 사용할지도 모른다라고 생각하고 있었다. 그러나이 점에서 나는 조금 붙이게된다. 고마워.

function make_filename_hash($filename) { 
    $info = pathinfo($filename); 
    $ext = empty($info['extension']) ? '' : '.' . $info['extension']; 
    $uniqueName = uniqid(basename($filename, $ext)); 
    return $uniqueName . $ext; 
} 
add_filter('sanitize_file_name', 'make_filename_hash', 10); 

이 도심 원본 파일 이름을 사용하고 그 다음에 시간에 민감한 식별자를 추가합니다 :

function make_filename_counter($filename) {  
    $qry; 
    $fcnt = 0; 
    $sql = ("SELECT counter FROM bwbps_filenamecounter WHERE id = 1"); 
    $cnt = mysql_query($sql); 
    foreach($cnt as $cnt) { 
     $fcnt = $cnt->counter; 
    } 
    $fcnt = $fcnt + 1; 
    $info = pathinfo($filename); 
    $ext = empty($info['extension']) ? '' : '.' . $info['extension']; 
    $sql = "UPDATE bwbps_filenamecounter SET counter = " . $fcnt . " WHERE id = 1"; 
    $qry = mysql_query($sql); 
    $fcnt = 0; 
    return $fcnt . $ext; 
} 
add_filter('sanitize_file_name', 'make_filename_counter', 10); 

답변

1

this question에 대한 답변을 바탕으로, 내가 좋아하는 뭔가를 제안합니다. PHP의 uniqid() 함수에 대한 설명은 here을 참조하십시오.

나는 긍정적이지 않지만, WordPress가 데이터베이스에 저장되기 전에 sanitize_file_name 필터를 적용한다고 생각합니다. 이 경우 새 이름을 데이터베이스 ID에 연결할 수 없습니다.

편집

원본 파일 이름을 포함하지 않는 고유 식별자를 반환하려면 다음

function make_filename_hash($filename) { 
     $info = pathinfo($filename); 
     $ext = empty($info['extension']) ? '' : '.' . $info['extension']; 
     return uniqid() . $ext; 
    } 
+0

이 위대한보고는 잘 작동 않지만 실제로 할 수있는 솔루션을 찾고있었습니다을 원래 파일 이름을 제거하고 가능하면 무작위 생성기 또는 다른 연속 시스템을 사용하여 숫자/식별자 인 최종 결과를 제어하십시오. 그러나 나는 당신이 필요로하는 것에 가깝게 접근 할 수있는 참고 자료로 코드를 사용하여 연구 할 것입니다. 고마워요. – sky67ro

+0

다른 인접 시스템이 무슨 뜻입니까? 임의의 숫자를 사용한다고해도 일련의 연속 된 숫자를 얻을 수는 없습니다.업로드 순서를 반영하는 파일 이름을 갖는 것이 중요한 경우 파일 이름을 현재 폴더/데이터베이스에있는 이미지 수로 간단히 대체 할 수 있습니다. 그게 당신이 뭘하는지 더 잘 설명하면 알려주세요. –

+0

그래, 내 생각은 무작위가 아닌 순차적으로 파일 이름을 얻는 것이었지만 가능한지 모르겠다. WP와 PHP로 시작했다. 파일 이름을 현재 데이터베이스에있는 이미지 수로 바꾸어도 내 생각에는 새로운 업로드가 반영되지 않습니까? 어쩌면 내가 오해하지만, db에 현재 존재하는 것이 무엇이든 관계없이 새로운 업로드 파일이받을 이름에 더 관심이 있습니다. – sky67ro

관련 문제