2012-04-23 7 views
2

사용자가 파일을 업로드 할 수있는 웹 사이트를 구현 중입니다. 앞으로 업로드 파일을 쉽게 관리 할 수 ​​있도록 업로드 폴더가 어떻게 구성되어야하는지 궁금합니다. 다른 사용자에게 다른 하위 폴더를 제공해야합니까 (예 : user1의 경우 upload/user1, user2의 경우/user2 등). 아니면 모두 같은 폴더에 저장해야합니까? 업로드 한 파일의 이름을 변경해야합니까? (많은 웹 사이트에서이 작업을 수행하고 있음을 알고 있습니다.)업로드 된 파일의 폴더 구조

답변

1

BLOB을 사용하지 않고 사용자가 임의의 수의 이미지를 가지고있는 경우 하위 폴더를 사용해야합니다. 예를 들어 사용자 ID 뒤에 이름이 지정된 하위 폴더를 만들 수 있습니다. 이 이유 중 하나는 폴더에 많은 파일이 포함되어 있으면 지정된 이름의 파일을 찾는 데 더 많은 시간이 걸리므로 액세스 시간이 늘어납니다. 파일 이름이 중복되어 이름이 중복되지 않도록 파일의 이름을 바꿀 수도 있습니다. 새로 생성 된 이름을 DB에 저장하는 것을 잊지 마십시오.

+0

다음과 같이 업로드 폴더를 구성하라는 해결책을 찾았습니다. 메인 폴더는 '업로드'로 3 단계로 구성되어 있습니다 (예 :'upload/0/0/file.jpg'). 'upload/0/0' 폴더가 1024 개의 파일로 채워지면 자동으로'upload/0/1' 폴더가 생성됩니다. 'upload/0' 폴더는 1024 개의 하위 폴더 ('upload/0/0' ~'upload/0/1023')를 가질 수 있습니다. 비슷하게,'upload' 폴더는 1024 개의 하위 폴더를 가질 수 있습니다. 따라서 최대 2 개의 30 개의 파일을 저장할 수 있습니다. 매일 사용자가 총 1024 개의 파일을 업로드하면 공간을 다 사용하는 데 2873 년이 걸립니다. 그것이 실현 가능하다고 생각하십니까? –

+0

나는 이것을 다음과 같이하는 것이 더 나을 것이라고 생각한다. 첫 번째 레벨의 서브 디렉토리의 이름을 사용자의 ID로 지정한다. 다음 단계는 사용자가 업로드 한 각 이미지에 고유 ID를 할당하는 경우에만 유효합니다. 그런 다음 두 번째 수준의 하위 디렉토리의 이름을 strval ($ imgId % DIVISOR_CHOSEN_BY_YOU)으로 지정할 수 있습니다. 어떤 경우에는 각 하위 디렉토리의 이미지 수가 줄어들 수도 있습니다. 나는이 점에있어서 전문가는 아니지만 ... – Exander

0

이름을 변경하면 로그인하지 않은 사람에게 "숨길"때 유용합니다. 원래 이름을 DB에 저장하십시오.

또한 항상 BLOB 유형의 SQL 테이블에 저장할 수 있습니다. 여러 GB가 될 수 있으며 파일 이름, 사용자 이름 등을 연관시킬 수 있습니다.

+0

동료가 DB를 불필요하게 확대 할 수 있으므로 BLOB 유형을 사용해서는 안된다는 말을 한 번 전했다. 어쨌든 업로드 된 파일의 위치에 대해 여전히 혼란 스럽긴하지만 파일 이름 바꾸기의 목적에 대한 답변을 주셔서 감사합니다 –

+0

DB를 확대 할 것이지만 파일을 사용하면 디렉토리가 커질 수 있습니다. 그것은 천천히 그것을하지 않습니다. – DanRedux