使用AFNetworking進行圖片上傳

來源:互聯網
上載者:User

標籤:serialize   列印   orm   過程   afn   哈哈   success   cts   nullable   

轉載自:http://blog.csdn.net/a645258072/article/details/51728806

項目中,我們經常會用到上傳圖片的功能,而目前的上傳圖片分為兩種(我只知道兩種,哈哈哈),一種是以將圖片加密轉成字串的形式,另一種是以檔案流的形式進行上傳。記得去年12月份在網上隨便找了一下,可能是我太low,找了好久沒找到。本來早就想總結一下,可是呢...我吧...懶得看AFNetworking源碼,就一直擱置了,今天工作做完了,正好分享一下。

第一種方式:檔案流方式進行上傳

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

 

    //接收類型不一致請替換一致text/html或別的

    manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObjects:@"application/json",

                                                         @"text/html",

                                                         @"image/jpeg",

                                                         @"image/png",

                                                         @"application/octet-stream",

                                                         @"text/json",

                                                         nil];

        

    NSURLSessionDataTask *task = [managerPOST:url parameters:nilconstructingBodyWithBlock:^(id<AFMultipartFormData> _NonnullformData) {

        

        NSData *imageData =UIImageJPEGRepresentation(image,1);

        

        NSDateFormatter *formatter = [[NSDateFormatteralloc] init];

        formatter.dateFormat [email protected]"yyyyMMddHHmmss";

        NSString *str = [formatterstringFromDate:[NSDatedate]];

        NSString *fileName = [NSStringstringWithFormat:@"%@.jpg", str];

        

        //上傳的參數(上傳圖片,以檔案流的格式)

        [formData appendPartWithFileData:imageData

                                    name:@"file"

                                fileName:fileName

                                mimeType:@"image/jpeg"];

        

    } progress:^(NSProgress *_Nonnull uploadProgress) {    

 

        //列印下上傳進度

    } success:^(NSURLSessionDataTask *_Nonnull task, id _Nullable responseObject) {

 

        //上傳成功

  } failure:^(NSURLSessionDataTask *_Nullable task, NSError * _Nonnull error) {                //上傳失敗

 

    }];

 

 

 

第二種方式:將image轉成NSData,在進行base64加密,此處代碼是借鑒朋友部落格中寫的,就是一個加密過程,不一定非要這麼寫,只要將image對象傳承NSData類型,然後在進行base64加密就可以了。將此處得到的傳回值NSString,作為入參傳入請求地址就可以了

+ (NSString *)imageBase64WithDataURL:(UIImage *)image

{

    NSData *imageData =nil;

    NSString *mimeType =nil;

    

    //圖片要壓縮的比例,此處100根據需求,自行設定

    CGFloat x =100 / image.size.height;

    if (x >1)

    {

        x = 1.0;

    }

    imageData = UIImageJPEGRepresentation(image, x);

    mimeType = @"image/jpeg";

    return [NSStringstringWithFormat:@"data:%@;base64,%@", mimeType,

            [imageData base64EncodedStringWithOptions:0]];

}

使用AFNetworking進行圖片上傳

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.