チャンクアップロードを送信することで、Cloudflareのアップロード上限100mbを回避しようとしています。しかし、実際にチャンクされたデータの送信を開始する方法はわかりません。サーバーに送信したい100個のブロブがあるとします。ストリームするのですか?どのようにして、サーバーは連続リクエストに互いに関連していると伝えますか?ここでjavascriptで配列をアップロードしてNode.jsで処理する
は、これまでの私のコードです:
getChunks(file) {
const divideBy = 1 * 1024 * 1024
const availableDivisions = Math.ceil(file.size/divideBy)
let currentSlice = 0
const chunks = Array(availableDivisions)
.fill()
.map((iteration, index) => {
const nextDivision = divideBy * (index + 1)
const chunk = file.slice(currentSlice, nextDivision, file.type)
currentSlice = nextDivision
return chunk
})
return chunks
}
sendChunk(blob) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest()
xhr.open('POST', 'http://localhost:4080/test', true)
xhr.setRequestHeader('Content-type', blob.type)
xhr.onreadystatechange =() => {
if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) {
resolve()
}
}
xhr.send(blob)
})
}
uploadChunked(file) {
const chunks = this.getChunks(file)
let iteration = 0
const upload = chunk => {
let nextIteration = iteration + 1
let nextChunk = chunks[nextIteration]
this.sendChunk(chunk).then(() => {
if (nextChunk) {
iteration = nextIteration
upload(nextChunk)
}
})
}
upload(chunks[0])
}
だから、これは正常に動作し、アップロード要求が正しく行われています。私の問題は、これらの連続したすべての要求が1つのファイルを参照していることをサーバーがどのように伝えるべきかを把握することです。私はオンラインで見てきましたが、私はこの部分で非常に混乱しています。
私はこれを理解しているかどうかはわかりません。どういうわけか、サーバ側で100MBのファイルをたくさん連結しますか? – 82Tuskers
アイデアは、1つのリクエストで100MB全体を送信する代わりに、パフォーマンスを向上させ、Cloudflareのようなアップロード制限を避けるために、より小さなチャンクを送信することです。 –