我的应用程序正在实现此处描述的一种技术,以允许通过 iPhone 的 3G 连接进行多部分文件上传。我也设法将委托插入到操作中,并且可以监控上传进度。但是,上传完成后,文件根本不存在。
深入挖掘后,我发现 SDK 中的 URL 似乎格式不正确。以下是相关代码:
__strong AmazonS3Client *s3 = [[AmazonS3Client alloc] initWithAccessKey:kS3Access withSecretKey:kS3Secret];
s3.timeout = 240;
s3ResponseHandler = [[S3ResponseHandler alloc] init];
S3InitiateMultipartUploadRequest *initReq = [[S3InitiateMultipartUploadRequest alloc] initWithKey:[filePath lastPathComponent] inBucket:kS3Bucket];
initReq 对象最终继承自具有 url 属性的 S3Request。在以下几行中,我记录了我的 [filePath lastPathComponent] 和该 url 属性的值:
NSLog(@"filePath lastComp: %@", [filePath lastPathComponent]);
NSLog(@"initReq URL: %@", [initReq url]);
结果:
filePath lastComp: filename.ext
initReq URL: https://<bucketname>.(null)/filename.ext
我相信 URL 应该是https://bucketname.s3.amazonaws.com,而不是(null)。
如果这是 SDK 用来推送我的上传的 URL,那么它显然不起作用!谁能建议我可以采取哪些故障排除步骤来进一步诊断此问题和解决方法?这几乎感觉像是 SDK 中的一个错误,但我对自己的信任远非如此。
我正在使用当前(撰写本文时)1.3.0 版本的 SDK。