七牛上傳圖片的了解與使用

在平時所做的小項(xiàng)目中,沒有使用過七牛這樣的第三方庫來上傳保存圖片,一般都只是保存在服務(wù)器的電腦里。
例如,在修改個人信息的時候,上傳圖片和修改信息都是使用同一個接口。

    // 獲得請求管理者
    AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
    
    // 發(fā)送GET請求
    [mgr POST:url parameters:para constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        
        UIImage *image = self.iconView.image;
        NSData *data = UIImageJPEGRepresentation(image, 0.3);
        
        //拼接文件參數(shù)
        [formData appendPartWithFileData:data name:@"pic" fileName:@"status.jpg" mimeType:@"image/jpeg"];
        
    } success:^(AFHTTPRequestOperation *operation, NSDictionary *resultDict) {

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    }];

在上傳頭像的同時把各種參數(shù)都傳了上去。
當(dāng)我看到七牛的時候一臉懵逼,這是什么意思,圖片保存到七牛,那服務(wù)器怎么把圖片和用戶聯(lián)系起來,或者說,當(dāng)我訪問我的信息的時候,服務(wù)器是怎么把我的頭像在七牛那么多照片中挑出來給我的。
因?yàn)橛闷吲I蟼鞯拇a是這樣的:

[[RequestManager shareInstance] POST:@"getToken.aspx" parameters:qnParam success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        if ([responseObject[@"resultCode"] isEqual:@"0000"]) {
            NSString *token = responseObject[@"data"][@"token"];
            QNUploadManager *uploadManager = [[QNUploadManager alloc] init];
            NSMutableArray *keys = [NSMutableArray array];
            for (NSInteger i = 0; i < _images.count; i ++) {
                NSData *data = [_images[i] rmk_resizedAndReturnData];
                [uploadManager putData:data key:_keys[i] token:token complete:^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
                    [keys addObject:key];
                    if (keys.count == _images.count) {
                        !resultHandler ?: resultHandler(keys, nil);
                    }
                } option:nil];
            }
        } else {
            !resultHandler ?: resultHandler(nil, responseObject[@"resultMsg"]);
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        !resultHandler ?: resultHandler(nil, error.description);
    }];

上面的代碼是使用七牛上傳照片,可以看到是通過getToken.aspx接口獲得token。

 NSString *token = responseObject[@"data"][@"token"];

獲得完token完以后再用七牛的方法傳上去:

[uploadManager putData:data key:_keys[i] token:token complete:^(QNResponseInfo *info, NSString *key, NSDictionary *resp) { 
      [keys addObject:key]; 
      if (keys.count == _images.count) { 
          !resultHandler ?: resultHandler(keys, nil); 
      }
} option:nil];

高潮來了,我發(fā)現(xiàn),傳上去一張,就會有一個key返回,其實(shí)這個key和 http://o79izl3a1.bkt.clouddn.com/ 拼接起來,就是這張圖片的地址了。
所以,其實(shí)七牛的上傳圖片的流程是,把圖片上傳上去保存到七牛中,如果成功,他會返回你一個key,把key保存到參數(shù)的字典中,然后一起發(fā)給服務(wù)器,這樣服務(wù)器就知道你的照片的路徑了,下一次訪問信息的時候,服務(wù)器直接給你照片路徑,這樣就解決了問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容