上傳圖片文件至阿里云

首先cocoapod安裝AliyunOSSiOS

一.請(qǐng)求阿里
//阿里云服務(wù)的sts認(rèn)證請(qǐng)求

  • (void)getAliSts {
    // 參數(shù)字典(服務(wù)器后臺(tái)定義)
    NSMutableDictionary* dictParams = [NSMutableDictionary dictionaryWithCapacity:0];
    [dictParams setObject:@"446b0752c174e319281db45a8696ecf7" forKey:@"API[app_key]"];
    [dictParams setObject:@"json" forKey:@"API[output]"];
    [dictParams setObject:@"816b81d40440f2e3a8e1acfde1f7334e" forKey:@"API[access_token]"];
    [dictParams setObject:@"header" forKey:@"type"];
    //urlString:接口地址
    [NetworkTools requestWithMethod:GET urlString:@"http://wb.yunlala.com/bvb/alists/oss_put" parameters:dictParams callbackFunction:^(NSURLResponse *response, NSDictionary respondDic) {
    //服務(wù)器返回阿里相關(guān)配置信息
    /

    2018-07-11 21:42:09.253987+0800 BWB[5459:3359590] {
    "result" : {
    "SecurityToken" : "CAIS8gF1q6Ft5B2yfSjIr4nEKIjNle5b0rKsZmPLjUwPQfZVgbzdsTz2IH9EenlhCeEWtPgylGxU7/cdlqpuFcYdpokHy2s0vPpt6gqET9frha7ctM496vCMHWyUFGS0vqv7aPn4S9XwY+qkb0u++AZ43br9c0fFPTmiKobbsYN7Sd4VUwKkF00kYu1bPQx/ssQXGGLMPPK2SH7Qj3HXEVBjt3gX6wo9y9zmkpLMsUCP3Q2mlLVN99moGPX+MZkwZqUYesyuwel7epDG1CNt8BVQ/M909vcbqWmX74HMUwMNvkXab7OFrccDKxRiP7jhwUKQCBo//hqAAQE0ly1dpxu54bSCp/4opXqW8I8MxFSByeyDrKbPsJ2CHMxAjRVSfPWDj7YCrA46Mm7SHhkdYdUhNlTRiTzBAJeNcNl9Ii7DTN2jhcegWNkKzY1b+vmmKHOlx0F+NM04NYlMmC0q1TC0tS2m5zsHpgYDBb+L8l+v7kUqILCKHYsd",
    "BucketName" : "bweibo-header",
    "Expiration" : "2018-07-11T14:42:09Z",
    "AccessKeySecret" : "BYRANG885aScWN8oCFGp4HqE4C9Dok48HBNMBe4nWKSM",
    "EndPoint" : "oss-cn-beijing.aliyuncs.com",
    "AccessKeyId" : "STS.NJqc2yx1zepGdEziLZMyynyvS"
    },
    "code" : "200"
    }
    */
    if ([respondDic[@"code"] integerValue]==200) {
    self.model = [MineAliOssModel mj_objectWithKeyValues:respondDic[@"result"]];
    //上傳文件至阿里云
    [self uploadToAli];
    } else {

      }
    

    } errorCallbackFunction:^(NSError *error) {

    }];
    }

二.由服務(wù)器返回?cái)?shù)據(jù)配置阿里上傳相關(guān)上傳配置
//傳圖片給阿里

  • (void)uploadToAli {

    id<OSSCredentialProvider> credential = [[OSSFederationCredentialProvider alloc] initWithFederationTokenGetter:^OSSFederationToken *{
    OSSFederationToken * token = [OSSFederationToken new];
    token.tAccessKey = self.model.AccessKeyId;
    token.tSecretKey = self.model.AccessKeySecret;
    token.tToken = self.model.SecurityToken;
    token.expirationTimeInGMTFormat = self.model.Expiration;

      return token;
    

    }];
    OSSClientConfiguration * conf = [OSSClientConfiguration new];
    // 網(wǎng)絡(luò)請(qǐng)求遇到異常失敗后的重試次數(shù)
    conf.maxRetryCount = 3;
    // 網(wǎng)絡(luò)請(qǐng)求的超時(shí)時(shí)間
    conf.timeoutIntervalForRequest =30;
    // 允許資源傳輸?shù)淖铋L(zhǎng)時(shí)間
    conf.timeoutIntervalForResource =24 * 60 * 60;
    // 你的阿里地址前面通常是這種格式 :http://oss……
    OSSClient *client = [[OSSClient alloc] initWithEndpoint:self.model.EndPoint credentialProvider:credential];
    OSSPutObjectRequest *putRequest = [OSSPutObjectRequest new];
    putRequest.bucketName = self.model.BucketName;
    self.imagePathStr = [self getimagePathStr];//文件名,自定義
    putRequest.objectKey = self.imagePathStr;
    putRequest.uploadingData = UIImageJPEGRepresentation(self.imgOrg, 1); // 直接上傳NSData
    putRequest.uploadProgress = ^(int64_t bytesSent,int64_t totalByteSent, int64_t totalBytesExpectedToSend) {

      NSLog(@" %lld,  %lld,  %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
    

    };

    OSSTask *putTask = [client putObject:putRequest];
    [putTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {

          NSLog(@" upload object success!");
          OSSPutObjectResult * result = task.result;
          NSLog(@" result.requestId : %@",result.requestId);
          NSLog(@" result.httpResponseHeaderFields : %@",result.httpResponseHeaderFields);
          NSLog(@" result.eTag : %@",result.eTag);
          NSLog(@" result.serverReturnJsonString : %@",result.serverReturnJsonString);
          
          //上傳頭像至服務(wù)器
          [self uploadImage:self.imagePathStr];
          
          
      } else {
          
          NSLog(@" upload object failed, error: %@" , task.error);
      }
      return nil;
    

    }];

}

三.將文件名地址傳給后臺(tái)服務(wù)器

//上傳頭像地址至服務(wù)器

  • (void)uploadImage:(NSString)imgStr {
    // 參數(shù)字典
    NSMutableDictionary
    dictParams = [NSMutableDictionary dictionaryWithCapacity:0];
    [dictParams setObject:APP_KEY forKey:@"API[app_key]"];
    [dictParams setObject:@"816b81d40440f2e3a8e1acfde1f7334e" forKey:@"API[access_token]"];
    [dictParams setObject:@"json" forKey:@"API[output]"];
    [dictParams setObject:@"oauth2" forKey:@"API[auth_type]"];
    [dictParams setObject:@"user" forKey:@"mod"];
    [dictParams setObject:@"edit" forKey:@"code"];
    [dictParams setObject:imgStr forKey:@"header"];

    NSString* urlStr = [NSString stringWithFormat:@"%@/api.php", DomainName];
    [NetworkTools requestWithMethod:POST urlString:urlStr parameters:dictParams callbackFunction:^(NSURLResponse *response, NSDictionary *respondDic) {
    if ([respondDic[@"code"] integerValue]==200) {
    NSLog(@"上傳頭像地址至服務(wù)器--------------");
    MineInfoModel *info = [MineInfoModel mj_objectWithKeyValues:respondDic[@"result"]];
    self.infoModel.aboutme = info.aboutme;
    [self.tableView reloadData];

      } else {
          
      }
    

    } errorCallbackFunction:^(NSError *error) {

    }];
    }

//獲取圖片路徑名,服務(wù)器后臺(tái)自己定制規(guī)則,md5路徑

  • (NSString *)getimagePathStr {
    NSData *imageData = UIImageJPEGRepresentation(self.imgOrg, 1);
    NSString *name = [imageData md5String];
    NSRange range;
    range.location = 27;
    range.length = 1;
    NSString *str1 = [name substringWithRange:range];
    range.location = 13;
    range.length = 1;
    NSString *str2 = [name substringWithRange:range];
    range.location = 5;
    range.length = 1;
    NSString *str3 = [name substringWithRange:range];
    range.location = 19;
    range.length = 1;
    NSString *str4 = [name substringWithRange:range];
    NSString *path = [NSString stringWithFormat:@"%@%@/%@%@/%@.jpg",str1,str2,str3,str4,name];
    return path;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末俺泣,一起剝皮案震驚了整個(gè)濱河市密似,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖脑奠,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異郑趁,居然都是意外死亡纬凤,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)笤昨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)祖驱,“玉大人,你說(shuō)我怎么就攤上這事瞒窒∞嗥В” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵崇裁,是天一觀的道長(zhǎng)匕坯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)拔稳,這世上最難降的妖魔是什么葛峻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮巴比,結(jié)果婚禮上术奖,老公的妹妹穿的比我還像新娘礁遵。我一直安慰自己,他們只是感情好采记,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布佣耐。 她就那樣靜靜地躺著,像睡著了一般挺庞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稼病,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天选侨,我揣著相機(jī)與錄音,去河邊找鬼然走。 笑死援制,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芍瑞。 我是一名探鬼主播晨仑,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拆檬!你這毒婦竟也來(lái)了洪己?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤竟贯,失蹤者是張志新(化名)和其女友劉穎答捕,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體屑那,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拱镐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了持际。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沃琅。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蜘欲,靈堂內(nèi)的尸體忽然破棺而出益眉,到底是詐尸還是另有隱情,我是刑警寧澤姥份,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布呜叫,位于F島的核電站,受9級(jí)特大地震影響殿衰,放射性物質(zhì)發(fā)生泄漏朱庆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一闷祥、第九天 我趴在偏房一處隱蔽的房頂上張望娱颊。 院中可真熱鬧傲诵,春花似錦、人聲如沸箱硕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)剧罩。三九已至栓拜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惠昔,已是汗流浹背幕与。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留镇防,地道東北人啦鸣。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像来氧,于是被迫代替她去往敵國(guó)和親诫给。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容