Tôi đang cố gắng tải hình ảnh từ ứng dụng iPhone lên S3 bằng url được ký trước. AWS đã kết thúc mà không có câu trả lời.tải lên hình ảnh bằng cách sử dụng url được ký trước đến s3 alway trả về lỗi 403
Bước 1: iPhone gửi một yêu cầu đến máy chủ để GET link S3 để tải lên một hình ảnh
{
randomKey = "EJg=";
"signed_request" = "https://as-profile.s3.amazonaws.com/EJg%3Dios_1442061863.jpg?AWSAccessKeyId=AKIXXXXXSWPIXXXXXNXQ&Expires=1442062152&Signature=L%2BMq%2FLMXXXXXXXXzmvyGXXXXXzU%3D";
url = "https://as-profile.s3.amazonaws.com/EJg%3Dios_1442061863.jpg";
}
Bước 2: Sử dụng giá trị "signed_request" Tôi cố gắng để tải lên một hình ảnh để S3 sử dụng phương pháp "PUT"
NSURL *url = [NSURL URLWithString:dict[@"signed_request"]];
// adding signed_request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPBody:imgData];
[request setValue:@"public-read" forHTTPHeaderField:@"x-amz-acl"];
[request setValue:@"image/jpeg" forHTTPHeaderField:@"Content-Type"];
[request setHTTPMethod:@"PUT"];
NSURLSessionDataTask *task1 = [self.session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSError *err;
NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//
NSLog(@"data = %@", dataString);
}];
[task1 resume];
// Phản hồi từ máy chủ
{ status code: 403, headers { URL: https://as-profile.s3.amazonaws.com/EJg%3Dios_1442061863.jpg?AWSAccessKeyId=AKIXXXXXSWPIXXXXXNXQ&Expires=1442062152&Signature=L%2BMq%2FLMXXXXXXXXzmvyGXXXXXzU%3D } { status code: 403, headers {
Connection = close;
"Content-Type" = "application/xml";
Date = "Sat, 12 Sep 2015 12:44:30 GMT";
Server = AmazonS3;
"Transfer-Encoding" = Identity;
"x-amz-id-2" = "mmKNUnKaR5bA4AY/odP2iLY4JAdPkFX7kqdCEteU+Lju2py7BC909ME+Z7+QQMM0Tq64UWtlgCQ=";
"x-amz-request-id" = 3AE1557722FFB82F;
} }
// DỮ LIỆU tôi nhận
<?xml version="1.0" encoding="UTF-8"?>
<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>AKIXXXXXSWPIXXXXXNXQ</AWSAccessKeyId><StringToSign>PUT
image/jpeg
1442062152
x-amz-acl:public-read
/as-profile/EJg%3Dios_1442061863.jpg</StringToSign><SignatureProvided>L+Mq/LM2LWlBA8TzmvyGt19AJzU=</SignatureProvided><StringToSignBytes>50 55 54 0a 0a 69 6d 61 67 65 2f 6a 70 65 67 0a 31 34 34 32 30 36 32 31 35 32 0a 78 2d 61 6d 7a 2d 61 63 6c 3a 70 75 62 6c 69 63 2d 72 65 61 64 0a 2f 61 73 2d 70 72 6f 66 69 6c 65 2f 45 4a 67 25 33 44 69 6f 73 5f 31 34 34 32 30 36 31 38 36 33 2e 6a 70 67</StringToSignBytes><RequestId>3AE1557722FFB82F</RequestId><HostId>mmKNUnKaR5bA4AY/odP2iLY4JAdPkFX7kqdCEteU+Lju2py7BC909ME+Z7+QQMM0Tq64UWtlgCQ=</HostId></Error>
Tôi vừa sao chép mã của bạn và mã hoạt động ở cuối. hãy kiểm tra xem URL của bạn có hoạt động không. – ChaubeyJi