簡體   English   中英

如何將文件上傳到Amazon S3並獲取鏈接?

[英]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];
}

我不知道為什么無法訪問respString內容

Okey,我已經設法自己做過:)首先,您應該設置一個訪問策略,該策略是PUT請求的屬性

requestForPUTSmth.accessPolicy = ASIS3AccessPolicyPublicReadWrite;

文件的鏈接是通過以下方式組成的:

NSString * linkString = [NSString stringWithFormat:@“ http://%@.s3.amazonaws.com/%@”,存儲桶,密鑰];

其中bucket-是您在S3上的文件夾的名稱,而Key是文件的名稱。 而已。

要按順序回答您的問題:

  1. 您聲明的key變量是文件在S3中采用的名稱。 文件由存儲桶中的密鑰標識,並且密鑰必須是唯一的-認為它們有點像文件名,但您只能獲得一個級別的文件夾(存儲桶)。
  2. 請求完成后( startSynchronous方法返回),您似乎可以訪問請求的responseDataresponseString屬性以獲取S3提供的任何返回數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM