首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS AFNetworking 上傳數據與模擬表單完整示例

     編輯:程式設計綜合問答

上傳字段數據(POST JSON/表單)

NSDictionary *params = @{@"userId": @123, @"token": @"abc"};

AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
[mgr POST:urlString parameters:params success:^(AFHTTPRequestOperation *op, id response) {
    NSLog(@"成功:%@", response);
} failure:^(AFHTTPRequestOperation *op, NSError *error) {
    NSLog(@"失敗:%@", error);
}];

上傳文件(multipart/form-data)

// 假設 fileData: NSData, fileName: NSString, mimeType: NSString
[mgr POST:urlString parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileData:fileData name:@"avatar" fileName:fileName mimeType:mimeType];
} success:^(AFHTTPRequestOperation *op, id response) {
    // 成功回調
} failure:^(AFHTTPRequestOperation *op, NSError *error) {
    // 失敗回調
}];

關鍵點

  • parameters 同時傳遞普通字段(如 userId、token)。
  • constructingBodyWithBlock 回調中追加文件數據,AFN 自動構建 multipart 請求體。
  • name 需與服務端接收參數名一致(如 PHP $_FILES['avatar'])。
  • 大文件建議啟用斷點續傳或分片上傳,AFN 3.x+ 支持 AFHTTPRequestSerializer 自定義。

AFN 4.x (Alamofire 風格) 簡寫

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:urlString parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileData:data name:name fileName:fileName mimeType:mimeType];
} progress:nil success:^(NSURLSessionDataTask *task, id response) {
} failure:^(NSURLSessionDataTask *task, NSError *error) {
}];

核心思路:**字段走 parameters,文件走 constructingBodyWithBlock**,AFN 封裝了繁瑣的邊界構建、Content-Type 設置。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved