여러 개의 큰 대형 파일을로드하려고합니다. 이렇게 나는 FileReader API를 사용하여 여러 파일을 읽고 부품을 나누는 중
각 덩어리도 기대할 덩어리의 총 수를 줄 부품 번호를 부여하고, 파이썬 CGI 프로그램에 전달됩니다
의 코드를 끼. 파이썬 CGI는 전체 파일 집합이 원하는 파일로 수신 될 때 청크를 연결합니다. 이것은 작동합니다.이제 각 파일을 이전과 같이 청크로 나누어서 여러 파일을로드하려고합니다. 각 파일에는 ID 번호가 있으므로 파이썬은 그것을 다른 디렉토리에 저장한다는 것을 알게되지만 메모리가 부족하여 충돌합니다. Reading multiple files with Javascript FileReader API one at a time
에서 한 번에 하나 개의 파일을 처리하기 위해 순차적으로 오히려 비동기하지만 내 시도보다는 내 현재 코드 작업이 코드가 실패되었습니다 얻기 위해 자바 스크립트를 설득하는 방법을 제안 있습니다.파일 분할 코드는 다음과 같습니다. numparts 변수는 재귀 호출을 종료합니다.
누구나 setupReader를 순차적으로 실행하려면 하단의 루프에서 의도 한 코드를 수정하는 방법을 제안 할 수 있습니까?
function setupReader(file,filename) { var fileSize = (file.size - 1); var chunkSize = 150000000; var offset = 0; var numparts= Math.ceil(fileSize/chunkSize); var chunkReaderBlock = null; var partno=0; var readEventHandler = function(evt) { if (evt.target.error == null) { offset += chunkSize; callback(evt.target.result); // callback for handling read chunk } else { console.log("Read error: " + evt.target.error); alert("File could not be read"); return; } if (partno >= numparts) { console.log("Done reading file"); return; } chunkReaderBlock(offset, chunkSize, file); } callback=function(result) { partno+=1; var bfile = result; var query="?fileName="+filename+"&Part="+partno+"&of="+numparts+"&bfile="+bfile; loadDoc('partition0',query,0); } chunkReaderBlock = function(_offset, length, _file) { var r = new FileReader(); var blob = _file.slice(_offset, length + _offset); r.onload = readEventHandler; r.readAsDataURL(blob); } chunkReaderBlock(offset, chunkSize, file); } for (var i = 0; i < numfiles; i++) { setupReader(fileList[i],fileList[i].name);
소원을 가져옵니다. 어쨌든 나는 그것을 줄 것이며 내가 어떻게 시작하는지 알려 줄 것이다. – Keir