2012-10-12 4 views
3

외부 라이브러리가없는 파일 api를 사용하여 HTML5 업 로더를 만들었으며 파일을 150MB 이상 업로드 할 때까지 제대로 작동했습니다. 이 시점에서 파일을 청크로 업로드해야한다는 것을 알았습니다.청크로 묶인 HTML 5 업로드 다시 참여

자바 스크립트 측면은 파일을 분할하고 업로드하는 다른 사람이 정렬하고 있습니다. 나는 PHP 쪽에서 일하고 있으며 이러한 덩어리에 다시 참여하는 방법을 찾기 위해 내가 무엇을보고 있는지 알아야합니다.

각 청크의 헤더를 수정해야합니까?

다음 번 대기하는 동안 어떻게 청크 대기열을 지정해야합니까?

우리는 이렇게 먼 길을 가고 있습니까?

답변

2

당신이 자바 스크립트 쪽을하고있는 gui와 이야기 할 필요가 있거나 적어도 완성 된 스크립트를 가져 와서 코드를 살펴볼 필요가있는 것처럼 보입니다. 청크 번호가 헤더 중 하나에서 보내질 것입니다. 요청.

다른 PHP 스크립트로 청크를 수신 할 것이므로 데이터베이스 나 파일 시스템에 저장하는 것이 좋습니다. 청크 번호를 추가해야하므로 파일 시스템이 조금 더 어려울 것입니다. 파일 시스템 경로를 가고 싶습니다. 파일 이름을 가지고있는 폴더에 이름을 저장하고 chunk를 0 ... chunk_count-1로 저장하는 것이 좋습니다.

헤더를 통해 총 청크 수를 받고 업로드 한 후에 청크 수를 비교해야합니다. 당신이 모든 덩어리를 가지고있을 때, 그 덩어리 이드의 순서로 그들을 조립하십시오. 파일 시스템을 사용하여 모든 파일이 실제로 완전하게 쓰여진 경우 (일반적으로 총 크기가 원래 크기와 일치하는 경우)주의를 기울여야합니다. 데이터베이스를 사용하면 모든 데이터가있을 때 행을 삽입 할 수 있으므로 훨씬 간단 해집니다.

모든 파일이 완전히 작성되었는지 확인하기위한 임시 해결책은 다른 폴더에 파일을 쓰고 쓰기가 완료되면 대상 폴더로 이동하는 것입니다. 두 폴더는 모두 같은 파일 시스템에 있어야합니다. move는 대신 copy + delete를 생성하지 않습니다.

+0

예, 그는 청크 ID, 총 청크 수 및 기타 몇 가지 세부 정보를 보내고 있습니다. PHP에서 모든 것을 다시 참여시키기 위해 내가해야 할 일을 알고 있습니까? –

+0

내 대답이 업데이트되었습니다. 어떻게 생각하는지 알려주세요. – xception

+0

신난다, 고마워! 데이터베이스 경로를 따라 가면 Amazon RDS를 사용하므로 충분히 빠릅니다. 모든 파일을 데이터베이스에 저장하고 로깅 할 때이 모든 것을 하나의 파일로 만드는 가장 좋은 방법은 무엇입니까? 아시다시피 부패의 위험은 얼마나 높습니까? –