2011-11-03 5 views
1

노드가 표준 Drupal을 통해 생성되면 하나의 파일이 업로드됩니다.Drupal 7 노드를 삭제해도 관련된 모든 파일이 삭제되지 않습니다.

나중에이 개 파일을 통해 노드에 추가됩니다 말

file_save(std Class) 
file_usage_add(std Class, 'module', 'node', $node_id) 

, 나는 file_managed과 file_usage 3 개 항목으로 끝낸다.

문제점 : 표준 Drupal을 통해 노드를 삭제하면 초기 노드 작성 중에 추가 된 파일은 제거되지만 나중에 추가 된 파일은 제거되지 않습니다. 이러한 파일은 두 테이블에 물리적으로 디스크에 남아 있습니다.

노드가 삭제 된 경우에도 파일을 보관하도록 설정된 플래그가 있습니까? 그렇다면이 플래그는 어디에 있으며 노드와 함께 제거되도록 올바르게 설정하는 방법은 무엇입니까?

답변

2

대답은 file_delete() 기능에,이 댓글을 참조하십시오

// 모든 모듈은 여전히 ​​file_usage 테이블의 사용 항목, //이

으로 삭제되지 않습니다
파일이있는 경우 모듈이 file_usage_add()을 사용하여 파일에 관심을 표명 한 경우 모듈에서 명시 적으로 그렇게하지 않는 한 삭제되지 않습니다.

당신은 file_usage_add()에 전화를 제거하거나 hook_file_delete()을 구현하고 파일이 삭제 될 수 있도록 file_usage_delete()을 사용할 수 있습니다 :

function mymodule_file_delete($file) { 
    file_usage_delete($file, 'mymodule'); 
} 
1

당신은 파일의 삭제를 강제 할 수 있습니다.

file_delete($old_file, TRUE); 

그러나이 파일을 사용하여 다른 노드에 사용되지 않았는지 확인 :

file_usage_list($file); 
+0

는 스팸 링크 –

+0

@RimuAtkinson, 들으있다. 링크를 제거했습니다. 링크 된 웹 사이트가 해킹당한 것처럼 보입니다. – milkovsky

+0

아래쪽 투표를 삭제했습니다 :) –

관련 문제