2013-02-08 6 views
0

amazon s3에 파일을 업로드 할 수 있어야하는 iOS 앱에서 작업하고 있지만 몇 가지 문제가 있습니다. 이 함수는 s3 버킷 내에서 올바른 키 또는 경로를 생성하지만 파일 자체는 업로드하지 않습니다. 아래 내가이 준비 키 경로를 생성ios amazon s3에 파일 업로드

if (self.s3 == nil) { 
     self.s3 = [[AmazonS3Client alloc] initWithAccessKey:[Config getS3Key] withSecretKey:[Config getS3Secret]] ; 

    } 
    [self performSelectorInBackground:@selector(processBackgroundThreadUploadInBackground:) 
          withObject:params]; 

} 


- (void)processBackgroundThreadUploadInBackground:(NSMutableDictionary *)params 
{ 


    S3PutObjectRequest *por = [[S3PutObjectRequest alloc] initWithKey:@"staging/videos/" inBucket:@"aaa.aaaaa.com"]; 
    por.contentType = @"video/mp4"; 
    por.data  = [NSData dataWithContentsOfURL:[NSURL URLWithString:[params valueForKey:@"takeurl"]]]; 

// por.contentType = @"image/png"; 
// por.data  = [params valueForKey:@"takeimage"]; 


    S3PutObjectResponse *putObjectResponse = [self.s3 putObject:por]; 
    [self performSelectorOnMainThread:@selector(showCheckErrorMessage:) 
          withObject:putObjectResponse.error 
         waitUntilDone:NO]; 
} 

시도 옵션 1의 코드는/비디오/S3에 버킷 내에서하지만 파일이 없습니다. 나는 이미지 파일로 이것을 시도했다. 내가 밀어 올리려는 데이터가 0이 아닌지 확인했다. xml 응답 내가 서버에서 콘텐츠 길이 0 비록 말한다. 나는 또한 동일한 결과로 s3 sdk에서 다중 부분 접근법을 시도했습니다. 내가 뭘 잘못하고 있는지 알 수 있습니까?

+0

AWS Java SDK를 사용할 때 AmazonS3Client의 설명서에 Content-Length를 설정해야한다고 나와 있습니다. 아마도 이것은 확인할 것이 무엇입니까? –

+0

두려움은 데이터의 길이에 대한 objectrequest의 콘텐츠 길이를 설정해도 차이가 없습니다. 덕분에 – glogic

+0

@glogic 대답을 알아낼 수 있었습니까 –

답변

3

분명히이 응답에 늦었지만, 앞으로 다른 사람에게이 문제가 발생하는 경우에는 요청을 잘못 구성하고있는 것입니다. 이렇게함으로써

: 키의 끝에 백 슬래시

S3PutObjectRequest *por = [[S3PutObjectRequest alloc] initWithKey:@"staging/videos/" inBucket:@"aaa.aaaaa.com"]; 

, 당신은 폴더가 아닌 파일을 생성했다. 접미어를 포함한 파일 이름 (예 : @"staging/videos/video.mp4")으로 키를 끝내야합니다.

+0

네, 이걸 잊어 버렸습니다. 그건 내 실수 야. – glogic