I have a problem with multipart upload r2 cloudflare.
There is 3 steps, upload init, upload part, and upload complete.
Upload part code
const uploadId = url.searchParams.get('uploadId');
const partNumberString = url.searchParams.get('partNumber');
if (partNumberString === null || uploadId === null) {
return new Response('Missing partNumber or uploadId', {
status: 400,
});
}
const formData = await request.formData();
const fileData = formData.get('file');
if (fileData === null) {
return new Response('Missing fileData', { status: 400 });
}
const partNumber = parseInt(partNumberString);
const multipartUpload = bucket.resumeMultipartUpload(key, uploadId);
try {
const uploadedPart: R2UploadedPart = await multipartUpload.uploadPart(partNumber, fileData);
return new Response(JSON.stringify(uploadedPart));
} catch (error: any) {
// important! when error, directly abort multipart upload
multipartUpload.abort();
return new Response(error.message, { status: 400 });
}
My problem is in upload part. I got response partNumber and etag, but the etag have same value for all parts. Can anyone know where is the mistake?
part {"partNumber":1,"etag":"385113dc95710b41a9cd107ca02bb9d8"}
part {"partNumber":2,"etag":"385113dc95710b41a9cd107ca02bb9d8"}
part {"partNumber":3,"etag":"385113dc95710b41a9cd107ca02bb9d8"}
part {"partNumber":4,"etag":"385113dc95710b41a9cd107ca02bb9d8"}
For workers code, i follow this : https://developers.cloudflare.com/r2/api/workers/workers-multipart-usage/
2