2013-03-22 5 views
4

HTML5 파일 API를 사용하여 파일 업 로더를 제작하고 있습니다. 중복 된 파일이 포함 된 실제 데이터를 기반으로 업로드되지 않도록하고 싶습니다. 즉, 이름이 다르거 나 다른 폴더에있는 경우에도 두 개의 파일을 동일하게 간주해야합니다.HTML5 파일 API로 업로드하기 전에 파일을 고유하게 식별합니다.

나는 md5로 해시를 계산하는 것을 고려해 왔지만,이 모든 것이 클라이언트 측에서 자바 스크립트와 함께 발생해야하기 때문에 더 큰 파일은 너무 오래 걸릴 것이다. 내가 큰 말을 할 때, 최대 5GB의 비디오를 의미합니다.

그냥 체크섬을 사용할 필요가 없습니다. 파일을 고유하게 식별하려고합니다. 해싱은이 목적을 위해 잔인 함을 느낄 수도 있지만 마음에 드는 것은 처음이었습니다.

업데이트 : 가벼운 fingerprint 알고리즘이 필요합니다. 위키 피 디아에서 예제로 Rabin을 발견했지만 자바 스크립트에서 이것을 구현하는 방법을 모릅니다.

+3

좋은 질문이지만, 해시가 마음에 오는 유일한 것입니다. 각 바이트를 확인하지 않고 파일이 고유한지 확인할 수 없으므로 궁극적으로 전체 파일을 통과 할 수 없습니다. – JJJ

답변

1

바로 가기가 없습니다. 모호성이없는 중복 파일을 인식해야하는 경우 파일의 전체 내용을 읽고 비교해야합니다.

그러나 어느 수준의 가양 성으로 살 수 있다면 몇 가지 전략을 취할 수 있습니다. 비슷한 문제에 대해서는 미리 정의 된 불변 윈도우를 사용하여 파일 블록의 주어진 부분 집합에 대한 MD5 해시를 계산합니다.

+0

나는 이것도 생각해 봤지만, 가장 좋은 부분 집합이 무엇인지는 잘 모르겠습니다. 분명히 파일의 머리말과 꼬리말을 피하려고합니다. 위양성 (false positive) 가능성을 최소화하기 위해 하위 집합을 어떻게 결정 했습니까? – bramcordie

+0

나는 궁극적으로 파일의 유형에 따라 달라집니다. 파일 형식 중 일부가 머리글이나 바닥 글에 일종의 해시를 포함하여 일종의 식별 태그를 저장하게 될 수도 있습니다 (mp3 id 태그 f.ex.에 대해 생각하고 있습니다) –

+0

제 경우에는 다른 미디어 및 파일 형식에 대해 작업 할 수 있습니다. 가장 좋은 방법은 파일 크기의 절반에서 샘플 크기의 절반을 뺀 바이트의 샘플을 가져 오는 것입니다. – bramcordie