Ios 使用Alamofire将文件上载到S3时返回错误
我正在尝试使用预签名请求将文件上载到S3Ios 使用Alamofire将文件上载到S3时返回错误,ios,swift,amazon-s3,alamofire,Ios,Swift,Amazon S3,Alamofire,我正在尝试使用预签名请求将文件上载到S3 Alamofire.upload(multipartFormData: { multipartFormData in //Attempt 1 multipartFormData.append(InputStream(data: data), withLength: UInt64(data.count), headers: [ "Content-Type": " " ]) //At
Alamofire.upload(multipartFormData: { multipartFormData in
//Attempt 1
multipartFormData.append(InputStream(data: data), withLength: UInt64(data.count), headers: [
"Content-Type": " "
])
//Attempt 2
//multipartFormData.append(data, withName: "file", fileName: fileName, mimeType: "application/json")
}, with: router) { encodingResult in
switch encodingResult {
case .success(let upload,_,_):
upload.validate()
upload.uploadProgress(closure: { progress in
guard let progressCallback = progressCallback else { return }
progressCallback(progress.fractionCompleted)
})
upload.responseString(completionHandler: { response in
switch response.result {
case .success(let json):
self.handleSuccessResponse(withJson: json, toCallback: callback)
case .failure(let error):
self.handleFailResponse(withData: response.data, toCallback: callback)
}
})
case .failure:
break
}
}
我得到了状态码403
答复:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
<AWSAccessKeyId>************</AWSAccessKeyId>
<StringToSign>POST\n\nmultipart/form-data;
boundary=alamofire.boundary.e001fb3981bbd6fc\n1522072451\nx-amz-
server-side-encryption:AES256\n/api/****/test.json</StringToSign>
如果我理解正确,问题是boundary=alamofire.boundary.e001fb3981bbd6fc
我如何删除这个
谢谢为什么不使用AWS iOS sdk?@strongjz我不想添加另一个sdk,只用于上传文件。这应该是一个简单的任务,使用Alamofire@strongjz还有其他建议吗?如果我找不到答案,我将使用SDKWho为您生成预签名的url?同样是的,我认为头球给你带来了麻烦。服务器是否正在生成预签名的url