Я пишу приложение для iPhone с использованием платформы Three20, теперь я использую предварительно подписанный URL-адрес для загрузки изображений на S3, но безуспешно.
Ниже приведен код
- (void)uploadImage {
TTURLRequest *request = [TTURLRequest requestWithURL:_presignedUrl delegate:self];
request.httpMethod = @"POST";
request.cachePolicy = TTURLRequestCachePolicyNoCache;
request.cacheExpirationAge = TT_CACHE_EXPIRATION_AGE_NEVER;
// add the image file
[request addFile:UIImageJPEGRepresentation(_image, 1.0)
mimeType:@"image/jpeg"
fileName:_key];
[request setValue:@"MyApp/1.0" forHTTPHeaderField:@"User-Agent"];
[request setValue:@"image/jpeg" forHTTPHeaderField:@"Content-type"];
TTURLXMLResponse *response = [[TTURLXMLResponse alloc] init];
request.response = response;
[response release];
[request send];
}
_key - это имя файла, например. тест.jpg
_presignedUrl выглядит примерно так:
https://s3.amazonaws.com/<bucket name>/test.jpg?Expires=(expires)&AWSAccessKeyId= (AWSAccessKeyId)&Signature=(Signature)
И предварительно подписанный URL-адрес генерируется на стороне сервера с использованием AWS Java SDK с использованием GeneratePresignedUrlRequest с , test.jpg в качестве ключа, а также POST в качестве метода http.
Что-то отсутствует или неправильно?