我收到内容长度 411 错误。 CompleteMultipartUpload 中的变量及其结构都是有效的。问题是内容长度标头:这是错误:
S3错误:在“https://v5l2.da.idrivee2-25.com/etc...”上执行“CompleteMultipartUpload”时出错; AWS HTTP 错误:客户端错误:
POST https://v5l2.da.idrivee2-25.com/lightvault-dev/0oTKAVReHXVwUuG?uploadId=582eab69-c4f6-47e0-9022-7df4b2702108
导致 411 Length Required
响应:
MissingContentLength
您必须提供 Content-Len(已截断...)MissingContentLength(客户端):您必须提供 Content-Length HTTP 标头。 -
MissingContentLength
您必须提供 Content-Length HTTP 标头。0oTKAVReHXVwUuGlightvault-dev/lightvault-dev/0oTKAVReHXVwUuG1780D527E55D2DBAdc178504-d6ed-4ffa-859f-95f1758bdcd1
请求 ID:1780D527E55D2DBA
错误类型:客户端
错误代码:缺少内容长度
// Complete the multipart upload
$result = $s3->completeMultipartUpload([
'Bucket' => $bucket,
'Key' => $key,
'UploadId' => $uploadId,
'Parts' => $parts
]);
if ($result->get('@metadata')['HTTPStatusCode'] == 200) {
echo "success";
} else {
echo $result->get('Error')['Message'];
}
根据 Amazon Documentation,您需要指定 Content-Type 标头,并且根据您的错误消息,您似乎还需要指定 Content-Length 标头。我没有使用过 AWS,并且您没有显示您指定任何标头的位置的代码,因此我无法查看您是否指定了以及您指定的方式是否存在任何问题,但您需要指定这两个标题,如果你还没有的话。如果您确实指定了,那么可能存在语法错误,或者您指定它们的方式或时间有问题。您可以检查您发送的标头以确保 Content-Type 和 Content-Length 存在且正确吗?