iOS分享,ios分享功能

來源:互聯網
上載者:User

iOS分享,ios分享功能

  在分享經驗之前,先說點題外話,之前的一個項目涉及到了多圖片的上傳,本來以為是一個很簡單的事情,卻著實困擾了我好久,究其原因,一是我不夠細心,二是與後台人員的交流不夠充分。在此,我想將我的老師常說的一句話送給大家:“做一個細心的男人(女人)”。好了,閑話少說,進入正題。

  AFNetworking是我們在日常開發中,常用於發送網路請求的第三方類庫。其中,我們經常用到的方法有兩類,一是普通的網路請求,其常用方法為:

//GET請求- (AFHTTPRequestOperation *)GET:(NSString *)URLString                     parameters:(id)parameters                        success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success                        failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure//POST請求- (AFHTTPRequestOperation *)POST:(NSString *)URLString                      parameters:(id)parameters                         success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success                         failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure

  對此,我不多說,相信大家都會,第二類就是我要重點說的上傳檔案的網路請求,跟普通的網路要求方法十分相似:

- (AFHTTPRequestOperation *)POST:(NSString *)URLString                      parameters:(id)parameters       constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block                         success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success                         failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure

  這個方法中多了一個block匿名函數,它會在網路請求發送之前調用,我們要添加所需上傳圖片的資料,就要在這裡進行,如:

  //設定網路要求管理者    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];   //發送網路請求   [manager POST:url parameters:paramsDic constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {     for (int i = 0; i < self.imageArr.count; i++) {       UIImage *image = self.imagArr[i];       NSData *data = UIImagePNGRepresentation(image);       [formData appendPartWithFileData:data name:[NSString stringWithFormat:@"photos[%d]",i] fileName:[NSString stringWithFormat:@"image%d.png",i] mimeType:@"image/png"];     }    } success:^(AFHTTPRequestOperation *operation, id responseObject) {    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {            }];

  注意:

  1、name:多檔案上傳時,name不能重複,不能重複,不能重複,重要的事情說三遍,我就是在這裡卡住了,當時我的介面文檔中讓我傳的參數是“photos[]”,結果我真的傻乎乎的只傳了一個“photos[]”,其結果就是只有一張圖片上傳成功,這也體現了交流的重要性,至於具體怎麼傳,介面文檔一般都有說明,如不清楚,請與後台人員溝通,這是伺服器用於接收你所上傳檔案的參數名,十分重要。

  2、fileName:不能重複,這個名字由使用者決定,只要不重複,其它沒有要求。

  3、mimeType:你所要上傳檔案的類型,各種檔案所對應的類型詳情請自己百度。

  上傳圖片一般會與相簿與照相機結合使用,但是其圖片一般較大,可使用UIImageJPEGRepresentation(image, 0.1)方法對圖片進行一定程度的壓縮,具體壓縮情況要結合你的執行個體。作一點說明:UIImagePNGRepresentation(image)與UIImageJPEGRepresentation(image, 0.1)方法都會返回圖片的data資料,如果將data資料轉化成圖片,圖片類型由尾碼名決定,如果儲存為.png尾碼的圖片,就是png圖片,如果儲存為.jpg尾碼的圖片,則就是jpg圖片,故不要被方法名中的PNG和JPEG所影響。

  最後,提醒一下大家:有時候你可能碰到上傳圖片的網路請求失敗,從而會懷疑自己是不是用錯了方法,如果你的檔案上傳是利用multipart/form-data請求上傳,則使用上述方法是沒有錯的,這時你需要與你的後台成員多進行溝通,因為錯的並不一定是你,自信一點。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.