[英]How to upload a file to amazon s3 and get link for it?
我正在嘗試將圖像上傳到Amazon S3並獲取文件的鏈接(將ASIHTTPRequest用於Amazon s3)。 到目前為止,我已經完成了以下工作(我的問題實際上在代碼中):
- (void) uploadAnImageToS3 {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[ASIS3Request setSharedSecretAccessKey:@"*****here I put my secretkey*****"];
[ASIS3Request setSharedAccessKey:@"*****here I put my key*****"];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(self.imageToPost)];
NSString * key = @"aKey"
ASIS3ObjectRequest *request = [ASIS3ObjectRequest PUTRequestForData:imageData withBucket:@"theBucketName" key:key];
[request setShouldCompressRequestBody:YES];
[request startSynchronous];
if (![request error]) {
//Here I should share a link for the put file, how do I get it? Is there any response from s3?
}
else {
NSLog(@"%@",[[request error] localizedDescription]);
}
[self performSelectorOnMainThread:@selector(stopActivity) withObject:self waitUntilDone:YES];
[pool release];
}
Okey,我已經設法自己做過:)首先,您應該設置一個訪問策略,該策略是PUT請求的屬性
requestForPUTSmth.accessPolicy = ASIS3AccessPolicyPublicReadWrite;
文件的鏈接是通過以下方式組成的:
NSString * linkString = [NSString stringWithFormat:@“ http://%@.s3.amazonaws.com/%@”,存儲桶,密鑰];
其中bucket-是您在S3上的文件夾的名稱,而Key是文件的名稱。 而已。
要按順序回答您的問題:
key
變量是文件在S3中采用的名稱。 文件由存儲桶中的密鑰標識,並且密鑰必須是唯一的-認為它們有點像文件名,但您只能獲得一個級別的文件夾(存儲桶)。 startSynchronous
方法返回),您似乎可以訪問請求的responseData
或responseString
屬性以獲取S3提供的任何返回數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.