You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.8生成S3分片上传预签名URL后无法识别分片问题

问题根源

你错误地通过Parameters.Add手动添加uploadId和partNumber参数,AWS SDK for .NET v3的GetPreSignedUrlRequest类本身提供了专门的UploadId和PartNumber属性来处理分片上传的预签名URL生成。手动添加参数会导致签名逻辑未正确包含这些参数,或者S3无法识别这是分片上传请求,最终把每次PUT操作当成覆盖整个对象的普通上传。

修复代码

直接给GetPreSignedUrlRequest的对应属性赋值,替换手动添加参数的逻辑:

var presignedRequest = new GetPreSignedUrlRequest
{
    BucketName = bucketName,
    Key = objectKey,
    Verb = HttpVerb.PUT,
    Expires = DateTime.UtcNow.AddHours(1),
    UploadId = uploadId,
    PartNumber = partNumber
};

string presignedUrl = s3Client.GetPreSignedURL(presignedRequest);
注意事项
  • 确认已通过InitiateMultipartUploadAsync获取到有效的UploadId,且每个分片的PartNumber在1~10000的合法范围内(S3分片上传的限制)。
  • 所有分片上传完成后,必须调用CompleteMultipartUploadAsync接口合并分片,否则S3不会将这些分片组合成完整对象,分片数据也不会被永久保留。

内容的提问来源于stack exchange,提问作者Abhishek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 01:49:51