【发布时间】:2017-03-24 21:19:10
【问题描述】:
我正在尝试使用预签名请求将一个大文件(如 不适合内存)上传到 S3。我终于让它和 curl 一起工作了
curl -v -T video.mp4 "http://<myBucket>.s3.amazonaws.com/video.mp4?AWSAccessKeyId=<myAccessKey>&Expires=1492187347&Signature=vpcUnvGALlVXju31Qk2nXNmBTgc%3D"
我现在正在尝试从我的应用程序中执行此操作。我首先尝试使用 AF(我不想使用):
let videoPath = Bundle.main.path(forResource: "media", ofType: "mov")!
let videoUrl = URL(fileURLWithPath: videoPath)
let presignedUrl = "http://<myBucket>.s3.amazonaws.com/video.mp4?AWSAccessKeyId=<myAccessKey>&Expires=1492187347&Signature=vpcUnvGALlVXju31Qk2nXNmBTgc%3D"
request = Alamofire.upload(videoUrl, to: presignedUrl, method: .put, headers: [:])
request.responseString(completionHandler: { response in
print(response)
})
request.resume()
打印一个实际上是错误的成功响应:
The request signature we calculated does not match the signature you provided. Check your key and signing method.
我在几个地方读到过,标题可能存在问题,无论如何我都不想在这里使用 AF。
在 Swift 中什么是 curl -T filePath url 的等价物?
【问题讨论】:
标签: ios networking amazon-s3 pre-signed-url