많은 양의 파일을 업로드하려면 FineUploader를 사용하려고합니다. 업로드하기 전에 파일을 조작해야합니다. 즉, 식별 정보를 익명으로 사용해야합니다. another answer에서 Ray Nicholus는 onSubmit 처리기에서 원본 파일을 거부하고 조작 된 파일을 다시 추가 할 것을 제안했습니다. 따라서 내 onSubmit 처리기는 다음과 같이 보입니다.많은 파일을 업로드하고 조작 할 때 메모리 사용량이 높음
onSubmit: function (id, name)
{
var file = this.getFile(id)
if (file.isAnonymized)
{
return;
}
var reader = new FileReader()
reader.onload = function()
{
var arrayBuffer = this.result
var byteArray = new Uint8Array(arrayBuffer)
// Manipulate the byteArray in some way...
var blob = new window.Blob([byteArray])
blob.isAnonymized = true
// add the anonymized file instead
uploader.addFiles({blob: blob, name: name})
}
reader.readAsArrayBuffer(file)
// cancel the original file
return false
},
작은 양의 파일에는 문제가 없습니다. 구체적인 예를 들어, 고객이 파이어 폭스에서 각각 1.5MB ~ 3MB의 파일을 업로드하려고 시도했지만 탭이 결국 손상되기 전에 Firefox의 메모리 사용량이 지붕을 통해 급격히 증가하는 것을 보았습니다. 다른 브라우저 (Chrome, Edge)도 비슷한 동작을 보입니다. 브라우저의 개발자 도구를 사용하여 큰 메모리 할당을 표시하지 않는 것 같습니다. 있는 그대로 파일을 업로드 할 때 아무런 문제가 없지만 이는 옵션이 아닙니다.
어떻게 든 WebWorker에 넣을 수 있습니다. – TryingToImprove
일부 js 파일 라이브러리는 많은 파일을 관리하도록 설계되지 않았습니다. XMLHttpRequest는 거대하고 비동기적인 객체입니다. 일반적으로이 종류의 라이브러리는 for 루프에서 모든 업로드를 시작합니다. for 루프는 1000 개 이상의 파일을 넣을 때 브라우저를 정지시킵니다 (1000 개의 동시 연결을 할당하고 시작하려고하므로). 나는 너에게 너의 자신의 업로드 부분을 쓸 것을 제안한다. – Fefux
내가 말했듯이 단순히 업로드하는 것이 매력처럼 작동하므로 문제가되지 않는다고 확신합니다. 고통을 시작하기 전에 미리 파일을 조작해야합니다. –